]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: vary the input alignment to Compare argument in compare_test.go
authorLotusFenn <fenn.lotus@gmail.com>
Sat, 7 Jul 2018 01:21:04 +0000 (09:21 +0800)
committerIan Lance Taylor <iant@golang.org>
Thu, 11 Oct 2018 04:45:18 +0000 (04:45 +0000)
Currently there are no tests that vary the alignment of Compare arguments.
Since Compare is written in assembly on most platforms (in internal/bytealg)
we should be testing different input alignments. This change modifies TestCompare
to vary the alignment of the second argument of Compare.

Updates #26129

Change-Id: I4c30a5adf96a41225df748675f4e9beea413b35c
Reviewed-on: https://go-review.googlesource.com/c/122536
Reviewed-by: Lotus Fenn <fenn.lotus@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/bytes/compare_test.go

index 3e33c27c9c961164419f1c2b68f80c96e5a8aa1f..a321f2e08618439c2e62413dfed0542bc33cc2e5 100644 (file)
@@ -41,9 +41,16 @@ var compareTests = []struct {
 
 func TestCompare(t *testing.T) {
        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)
+               numShifts := 16
+               buffer := make([]byte, len(tt.b)+numShifts)
+               // vary the input alignment of tt.b
+               for offset := 0; offset <= numShifts; offset++ {
+                       shiftedB := buffer[offset : len(tt.b)+offset]
+                       copy(shiftedB, tt.b)
+                       cmp := Compare(tt.a, shiftedB)
+                       if cmp != tt.i {
+                               t.Errorf(`Compare(%q, %q), offset %d = %v; want %v`, tt.a, tt.b, offset, cmp, tt.i)
+                       }
                }
        }
 }