93 lines
1.9 KiB
Go
93 lines
1.9 KiB
Go
|
package mint
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/hex"
|
||
|
"fmt"
|
||
|
"reflect"
|
||
|
"runtime"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func unhex(h string) []byte {
|
||
|
b, err := hex.DecodeString(h)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return b
|
||
|
}
|
||
|
|
||
|
func assert(t *testing.T, test bool, msg string) {
|
||
|
t.Helper()
|
||
|
prefix := string("")
|
||
|
for i := 1; ; i++ {
|
||
|
_, file, line, ok := runtime.Caller(i)
|
||
|
if !ok {
|
||
|
break
|
||
|
}
|
||
|
prefix = fmt.Sprintf("%v: %d\n", file, line) + prefix
|
||
|
}
|
||
|
if !test {
|
||
|
t.Fatalf(prefix + msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func assertError(t *testing.T, err error, msg string) {
|
||
|
t.Helper()
|
||
|
assert(t, err != nil, msg)
|
||
|
}
|
||
|
|
||
|
func assertNotError(t *testing.T, err error, msg string) {
|
||
|
t.Helper()
|
||
|
if err != nil {
|
||
|
msg += ": " + err.Error()
|
||
|
}
|
||
|
assert(t, err == nil, msg)
|
||
|
}
|
||
|
|
||
|
func assertNil(t *testing.T, x interface{}, msg string) {
|
||
|
t.Helper()
|
||
|
assert(t, x == nil, msg)
|
||
|
}
|
||
|
|
||
|
func assertNotNil(t *testing.T, x interface{}, msg string) {
|
||
|
t.Helper()
|
||
|
assert(t, x != nil, msg)
|
||
|
}
|
||
|
|
||
|
func assertEquals(t *testing.T, a, b interface{}) {
|
||
|
t.Helper()
|
||
|
assert(t, a == b, fmt.Sprintf("%+v != %+v", a, b))
|
||
|
}
|
||
|
|
||
|
func assertByteEquals(t *testing.T, a, b []byte) {
|
||
|
t.Helper()
|
||
|
assert(t, bytes.Equal(a, b), fmt.Sprintf("%+v != %+v", hex.EncodeToString(a), hex.EncodeToString(b)))
|
||
|
}
|
||
|
|
||
|
func assertNotByteEquals(t *testing.T, a, b []byte) {
|
||
|
t.Helper()
|
||
|
assert(t, !bytes.Equal(a, b), fmt.Sprintf("%+v == %+v", hex.EncodeToString(a), hex.EncodeToString(b)))
|
||
|
}
|
||
|
|
||
|
func assertCipherSuiteParamsEquals(t *testing.T, a, b CipherSuiteParams) {
|
||
|
t.Helper()
|
||
|
assertEquals(t, a.Suite, b.Suite)
|
||
|
// Can't compare aeadFactory values
|
||
|
assertEquals(t, a.Hash, b.Hash)
|
||
|
assertEquals(t, a.KeyLen, b.KeyLen)
|
||
|
assertEquals(t, a.IvLen, b.IvLen)
|
||
|
}
|
||
|
|
||
|
func assertDeepEquals(t *testing.T, a, b interface{}) {
|
||
|
t.Helper()
|
||
|
assert(t, reflect.DeepEqual(a, b), fmt.Sprintf("%+v != %+v", a, b))
|
||
|
}
|
||
|
|
||
|
func assertSameType(t *testing.T, a, b interface{}) {
|
||
|
t.Helper()
|
||
|
A := reflect.TypeOf(a)
|
||
|
B := reflect.TypeOf(b)
|
||
|
assert(t, A == B, fmt.Sprintf("%s != %s", A.Name(), B.Name()))
|
||
|
}
|