dd931d9b48
Reviewed-on: https://go-review.googlesource.com/136435 gotools/: * Makefile.am (mostlyclean-local): Run chmod on check-go-dir to make sure it is writable. (check-go-tools): Likewise. (check-vet): Copy internal/objabi to check-vet-dir. * Makefile.in: Rebuild. From-SVN: r264546
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
// Copyright 2018 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 subtle_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"crypto/internal/subtle"
|
|
)
|
|
|
|
var a, b [100]byte
|
|
|
|
var aliasingTests = []struct {
|
|
x, y []byte
|
|
anyOverlap, inexactOverlap bool
|
|
}{
|
|
{a[:], b[:], false, false},
|
|
{a[:], b[:0], false, false},
|
|
{a[:], b[:50], false, false},
|
|
{a[40:50], a[50:60], false, false},
|
|
{a[40:50], a[60:70], false, false},
|
|
{a[:51], a[50:], true, true},
|
|
{a[:], a[:], true, false},
|
|
{a[:50], a[:60], true, false},
|
|
{a[:], nil, false, false},
|
|
{nil, nil, false, false},
|
|
{a[:], a[:0], false, false},
|
|
{a[:10], a[:10:20], true, false},
|
|
{a[:10], a[5:10:20], true, true},
|
|
}
|
|
|
|
func testAliasing(t *testing.T, i int, x, y []byte, anyOverlap, inexactOverlap bool) {
|
|
any := subtle.AnyOverlap(x, y)
|
|
if any != anyOverlap {
|
|
t.Errorf("%d: wrong AnyOverlap result, expected %v, got %v", i, anyOverlap, any)
|
|
}
|
|
inexact := subtle.InexactOverlap(x, y)
|
|
if inexact != inexactOverlap {
|
|
t.Errorf("%d: wrong InexactOverlap result, expected %v, got %v", i, inexactOverlap, any)
|
|
}
|
|
}
|
|
|
|
func TestAliasing(t *testing.T) {
|
|
for i, tt := range aliasingTests {
|
|
testAliasing(t, i, tt.x, tt.y, tt.anyOverlap, tt.inexactOverlap)
|
|
testAliasing(t, i, tt.y, tt.x, tt.anyOverlap, tt.inexactOverlap)
|
|
}
|
|
}
|