]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: document Compare/Equal semantics for nil arguments, and add tests.
authorDavid Symonds <dsymonds@golang.org>
Sat, 18 Feb 2012 06:39:40 +0000 (17:39 +1100)
committerDavid Symonds <dsymonds@golang.org>
Sat, 18 Feb 2012 06:39:40 +0000 (17:39 +1100)
R=golang-dev, bradfitz, r, r
CC=golang-dev
https://golang.org/cl/5676090

src/pkg/bytes/bytes.go
src/pkg/bytes/bytes_test.go

index e94a0ec5c4f950feec36cce66e66cdc362bbbf0f..7d1426fb4174d8197b7370933a4947e5dc456115 100644 (file)
@@ -13,6 +13,7 @@ import (
 
 // Compare returns an integer comparing the two byte arrays lexicographically.
 // The result will be 0 if a==b, -1 if a < b, and +1 if a > b
+// A nil argument is equivalent to an empty slice.
 func Compare(a, b []byte) int {
        m := len(a)
        if m > len(b) {
@@ -37,6 +38,7 @@ func Compare(a, b []byte) int {
 }
 
 // Equal returns a boolean reporting whether a == b.
+// A nil argument is equivalent to an empty slice.
 func Equal(a, b []byte) bool
 
 func equalPortable(a, b []byte) bool {
index 2a1d41b910e3f222b091ccefe2eeac734f9edefa..000f235176df8d7a01f42dba4f095dd6cfa9ff4e 100644 (file)
@@ -46,32 +46,39 @@ type BinOpTest struct {
        i int
 }
 
-var comparetests = []BinOpTest{
-       {"", "", 0},
-       {"a", "", 1},
-       {"", "a", -1},
-       {"abc", "abc", 0},
-       {"ab", "abc", -1},
-       {"abc", "ab", 1},
-       {"x", "ab", 1},
-       {"ab", "x", -1},
-       {"x", "a", 1},
-       {"b", "x", -1},
+var compareTests = []struct {
+       a, b []byte
+       i    int
+}{
+       {[]byte(""), []byte(""), 0},
+       {[]byte("a"), []byte(""), 1},
+       {[]byte(""), []byte("a"), -1},
+       {[]byte("abc"), []byte("abc"), 0},
+       {[]byte("ab"), []byte("abc"), -1},
+       {[]byte("abc"), []byte("ab"), 1},
+       {[]byte("x"), []byte("ab"), 1},
+       {[]byte("ab"), []byte("x"), -1},
+       {[]byte("x"), []byte("a"), 1},
+       {[]byte("b"), []byte("x"), -1},
+       // nil tests
+       {nil, nil, 0},
+       {[]byte(""), nil, 0},
+       {nil, []byte(""), 0},
+       {[]byte("a"), nil, 1},
+       {nil, []byte("a"), -1},
 }
 
 func TestCompare(t *testing.T) {
-       for _, tt := range comparetests {
-               a := []byte(tt.a)
-               b := []byte(tt.b)
-               cmp := Compare(a, b)
+       for _, tt := range compareTests {
+               cmp := Compare(tt.a, tt.b)
                if cmp != tt.i {
                        t.Errorf(`Compare(%q, %q) = %v`, tt.a, tt.b, cmp)
                }
-               eql := Equal(a, b)
+               eql := Equal(tt.a, tt.b)
                if eql != (tt.i == 0) {
                        t.Errorf(`Equal(%q, %q) = %v`, tt.a, tt.b, eql)
                }
-               eql = EqualPortable(a, b)
+               eql = EqualPortable(tt.a, tt.b)
                if eql != (tt.i == 0) {
                        t.Errorf(`EqualPortable(%q, %q) = %v`, tt.a, tt.b, eql)
                }