Add tests
This commit is contained in:
parent
5f6f4dd047
commit
0cc5d27277
179
assert_test.go
Normal file
179
assert_test.go
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
package assert
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
// Slices
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
func TestSameElementsSlices(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
a, b := []int{1, 2}, []int{1, 2}
|
||||||
|
fa.SameElements(a, a)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
fa.SameElements(a, b)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{2, 1}
|
||||||
|
fa.SameElements(b, a) // SameElements ignores order
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{1, 2, 3}
|
||||||
|
fa.SameElements(b, a)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{2, 3}
|
||||||
|
fa.SameElements(b, a)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmpSlices(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
a, b := []int{1, 2}, []int{1, 2}
|
||||||
|
fa.Cmp(a, a)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{2, 1}
|
||||||
|
fa.Cmp(a, b) // Cmp does not accept different order
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{1, 2, 3}
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
b = []int{2, 3}
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
// Maps
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
func TestCmpMaps(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
a, b := map[int]int{1: 2, 3: 4}, map[int]int{1: 2, 3: 4}
|
||||||
|
fa.Cmp(a, a)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
b = map[int]int{1: 2, 3: 5}
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
b = map[int]int{1: 2, 3: 4, 5: 6}
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
b = map[int]int{1: 2}
|
||||||
|
fa.Cmp(a, b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
// Pointers
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
func TestEqPointers(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
var a, b int
|
||||||
|
fa.Eq(&a, &a)
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
fa.Eq(&a, &b)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
fa.Eq(&b, &a)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmpPointers(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
type B struct {
|
||||||
|
Value int
|
||||||
|
}
|
||||||
|
type A struct {
|
||||||
|
B *B
|
||||||
|
}
|
||||||
|
|
||||||
|
fa.Cmp(A{B: &B{1}}, A{&B{1}})
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
fa.Cmp(A{B: &B{1}}, A{&B{2}})
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
|
||||||
|
fa.Cmp(A{B: &B{1}}, A{nil})
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
// Timezones
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
func mustLoadLocation(zone string) *time.Location {
|
||||||
|
loc, err := time.LoadLocation(zone)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return loc
|
||||||
|
}
|
||||||
|
|
||||||
|
var locAmsterdam = mustLoadLocation(`Europe/Amsterdam`)
|
||||||
|
var locTokyo = mustLoadLocation(`Asia/Tokyo`)
|
||||||
|
|
||||||
|
func TestEqTimezones(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
ti := time.Now()
|
||||||
|
ti, ti2 := ti.In(locAmsterdam), ti.In(locTokyo)
|
||||||
|
|
||||||
|
fa.Eq(ti, ti2)
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmpTimezones(t *testing.T) {
|
||||||
|
assert := New(t)
|
||||||
|
ft, fa := newFakeT()
|
||||||
|
|
||||||
|
type A struct {
|
||||||
|
Time time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
ti := time.Now()
|
||||||
|
ti2 := ti.In(time.UTC)
|
||||||
|
fa.Cmp(&A{ti}, &A{ti2})
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
ti2 = ti.In(locAmsterdam)
|
||||||
|
fa.Cmp(&A{ti}, &A{ti2})
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
ti = ti.In(locTokyo)
|
||||||
|
fa.Cmp(&A{ti}, &A{ti2})
|
||||||
|
assert.False(ft.GotError())
|
||||||
|
|
||||||
|
ti2 = ti2.Add(time.Second)
|
||||||
|
fa.Cmp(&A{ti}, &A{ti2})
|
||||||
|
assert.True(ft.GotError())
|
||||||
|
}
|
24
faket_test.go
Normal file
24
faket_test.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package assert
|
||||||
|
|
||||||
|
type fakeT struct {
|
||||||
|
gotError bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFakeT() (*fakeT, Assert) {
|
||||||
|
var ft fakeT
|
||||||
|
return &ft, New(&ft)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *fakeT) Error(_ ...interface{}) {
|
||||||
|
t.gotError = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (_ *fakeT) Helper() {}
|
||||||
|
func (_ *fakeT) Cleanup(_ func()) {}
|
||||||
|
|
||||||
|
func (t *fakeT) GotError() bool {
|
||||||
|
r := t.gotError
|
||||||
|
t.gotError = false
|
||||||
|
|
||||||
|
return r
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user