|  | // 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) | 
|  | } | 
|  | } | 
|  | } |