This commit is contained in:
parent
b9b88d8fa0
commit
f5f7691de0
@ -6,6 +6,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
func TestListLen(t *testing.T) {
|
func TestListLen(t *testing.T) {
|
||||||
assert.Equal(t, 0, Empty().Len(), "should insert at head")
|
assert.Equal(t, 0, Empty().Len(), "should insert at head")
|
||||||
assert.Equal(t, 1, Empty().Conj(1).Len(), "should insert at head")
|
assert.Equal(t, 1, Empty().Conj(1).Len(), "should insert at head")
|
||||||
@ -39,26 +41,33 @@ func TestListRest(t *testing.T) {
|
|||||||
assert.Equal(t, Empty(), Empty().Rest(), "should return rest sublist")
|
assert.Equal(t, Empty(), Empty().Rest(), "should return rest sublist")
|
||||||
assert.Equal(t, Empty(), Empty().Rest().Rest(), "should return rest sublist")
|
assert.Equal(t, Empty(), Empty().Rest().Rest(), "should return rest sublist")
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// generative tests
|
func intListGen() *rapid.Generator[IList] {
|
||||||
func ListLengthProperty(t *testing.T) {
|
return rapid.Custom(func(t *rapid.T) IList {
|
||||||
myList := Empty()
|
myList := Empty()
|
||||||
expectedSized := 0
|
|
||||||
rapid.Check(t, func(t *rapid.T) {
|
|
||||||
t.Repeat(map[string]func(*rapid.T){
|
t.Repeat(map[string]func(*rapid.T){
|
||||||
"conj": func(t *rapid.T) {
|
"conj": func(t *rapid.T) {
|
||||||
expectedSized += 1
|
|
||||||
myList = myList.Conj(rapid.Int().Draw(t, "el"))
|
myList = myList.Conj(rapid.Int().Draw(t, "el"))
|
||||||
},
|
},
|
||||||
"rest": func(t *rapid.T) {
|
|
||||||
if !myList.IsEmpty() {
|
|
||||||
expectedSized -= 1
|
|
||||||
}
|
|
||||||
myList = myList.Rest()
|
|
||||||
},
|
|
||||||
"": func(t *rapid.T) {
|
|
||||||
assert.Equal(t, myList.Len(), expectedSized, "must be equal")
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
return myList
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// generative tests
|
||||||
|
func TestConjIncreasesLength(t *testing.T) {
|
||||||
|
rapid.Check(t, func(t *rapid.T) {
|
||||||
|
myList := intListGen().Draw(t, "myList")
|
||||||
|
assert.Equal(t, myList.Len()+1, myList.Conj(42).Len())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRestDecreasesLengthForNonEmptyList(t *testing.T) {
|
||||||
|
rapid.Check(t, func(t *rapid.T) {
|
||||||
|
myList := intListGen().Filter(func(l IList) bool {
|
||||||
|
return !l.IsEmpty()
|
||||||
|
}).Draw(t, "myList")
|
||||||
|
assert.Equal(t, myList.Len()-1, myList.Rest().Len())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user