| // Copyright 2009 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package strconv_test | 
 |  | 
 | import ( | 
 | 	"bytes" | 
 | 	. "strconv" | 
 | 	"testing" | 
 | ) | 
 |  | 
 | type atobTest struct { | 
 | 	in  string | 
 | 	out bool | 
 | 	err error | 
 | } | 
 |  | 
 | var atobtests = []atobTest{ | 
 | 	{"", false, ErrSyntax}, | 
 | 	{"asdf", false, ErrSyntax}, | 
 | 	{"0", false, nil}, | 
 | 	{"f", false, nil}, | 
 | 	{"F", false, nil}, | 
 | 	{"FALSE", false, nil}, | 
 | 	{"false", false, nil}, | 
 | 	{"False", false, nil}, | 
 | 	{"1", true, nil}, | 
 | 	{"t", true, nil}, | 
 | 	{"T", true, nil}, | 
 | 	{"TRUE", true, nil}, | 
 | 	{"true", true, nil}, | 
 | 	{"True", true, nil}, | 
 | } | 
 |  | 
 | func TestParseBool(t *testing.T) { | 
 | 	for _, test := range atobtests { | 
 | 		b, e := ParseBool(test.in) | 
 | 		if test.err != nil { | 
 | 			// expect an error | 
 | 			if e == nil { | 
 | 				t.Errorf("%s: expected %s but got nil", test.in, test.err) | 
 | 			} else { | 
 | 				// NumError assertion must succeed; it's the only thing we return. | 
 | 				if test.err != e.(*NumError).Err { | 
 | 					t.Errorf("%s: expected %s but got %s", test.in, test.err, e) | 
 | 				} | 
 | 			} | 
 | 		} else { | 
 | 			if e != nil { | 
 | 				t.Errorf("%s: expected no error but got %s", test.in, e) | 
 | 			} | 
 | 			if b != test.out { | 
 | 				t.Errorf("%s: expected %t but got %t", test.in, test.out, b) | 
 | 			} | 
 | 		} | 
 | 	} | 
 | } | 
 |  | 
 | var boolString = map[bool]string{ | 
 | 	true:  "true", | 
 | 	false: "false", | 
 | } | 
 |  | 
 | func TestFormatBool(t *testing.T) { | 
 | 	for b, s := range boolString { | 
 | 		if f := FormatBool(b); f != s { | 
 | 			t.Errorf(`FormatBool(%v): expected %q but got %q`, b, s, f) | 
 | 		} | 
 | 	} | 
 | } | 
 |  | 
 | type appendBoolTest struct { | 
 | 	b   bool | 
 | 	in  []byte | 
 | 	out []byte | 
 | } | 
 |  | 
 | var appendBoolTests = []appendBoolTest{ | 
 | 	{true, []byte("foo "), []byte("foo true")}, | 
 | 	{false, []byte("foo "), []byte("foo false")}, | 
 | } | 
 |  | 
 | func TestAppendBool(t *testing.T) { | 
 | 	for _, test := range appendBoolTests { | 
 | 		b := AppendBool(test.in, test.b) | 
 | 		if !bytes.Equal(b, test.out) { | 
 | 			t.Errorf("AppendBool(%q, %v): expected %q but got %q", test.in, test.b, test.out, b) | 
 | 		} | 
 | 	} | 
 | } |