diff options
Diffstat (limited to 'src/strconv/atob_test.go')
-rw-r--r-- | src/strconv/atob_test.go | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/strconv/atob_test.go b/src/strconv/atob_test.go new file mode 100644 index 0000000..28f469f --- /dev/null +++ b/src/strconv/atob_test.go @@ -0,0 +1,91 @@ +// 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) + } + } +} |