92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
|
// 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)
|
||
|
}
|
||
|
}
|
||
|
}
|