This commit is contained in:
parent
8dd6fd958d
commit
6155074b77
@ -1,48 +1,14 @@
|
||||
package list
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"pgregory.net/rapid"
|
||||
"testing"
|
||||
)
|
||||
|
||||
/*
|
||||
|
||||
func TestListLen(t *testing.T) {
|
||||
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, 2, Empty().Conj(1).Conj(2).Len(), "should insert at head")
|
||||
}
|
||||
|
||||
func TestListString(t *testing.T) {
|
||||
assert.Equal(t, "()", Empty().String(), "should insert at head")
|
||||
}
|
||||
|
||||
func TestListConj(t *testing.T) {
|
||||
var l IList
|
||||
assert.Equal(t, "()", Empty().String(), "should insert at head")
|
||||
l = New(5)
|
||||
assert.Equal(t, "(5)", l.String(), "should insert at head")
|
||||
l = Empty().Conj(4)
|
||||
assert.Equal(t, "(4)", l.String(), "should insert at head")
|
||||
}
|
||||
|
||||
func TestListFirst(t *testing.T) {
|
||||
l := Empty().Conj(5).Conj(6).Conj(7)
|
||||
assert.Equal(t, 7, l.First(), "should return first element")
|
||||
assert.Equal(t, nil, Empty().First(), "should return nil")
|
||||
}
|
||||
|
||||
func TestListRest(t *testing.T) {
|
||||
l := Empty().Conj(5).Conj(6).Conj(7)
|
||||
assert.Equal(t, "(6 5)", l.Rest().String(), "should return rest sublist")
|
||||
assert.Equal(t, "(5)", l.Rest().Rest().String(), "should return rest sublist")
|
||||
assert.Equal(t, "()", l.Rest().Rest().Rest().String(), "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")
|
||||
}
|
||||
*/
|
||||
|
||||
func intListGen() *rapid.Generator[IList] {
|
||||
return rapid.OneOf(rapid.Custom(func(t *rapid.T) IList {
|
||||
myList := Empty()
|
||||
@ -78,3 +44,18 @@ func TestFirstIsNilWhenEmpty(t *testing.T) {
|
||||
assert.Equal(t, myList.IsEmpty(), myList.First() == nil)
|
||||
})
|
||||
}
|
||||
|
||||
func TestStringifyIntList(t *testing.T) {
|
||||
assert.Equal(t, "(1 2 3)", New(3).Conj(2).Conj(1).String())
|
||||
rapid.Check(t, func(t *rapid.T) {
|
||||
myList := intListGen().Draw(t, "myList")
|
||||
s := myList.String()
|
||||
r := regexp.MustCompile(`\(.*\)`)
|
||||
assert.Equal(t, true, r.Match([]byte(s)))
|
||||
if !myList.IsEmpty() {
|
||||
assert.Equal(t, myList.Len(), strings.Count(s, " ")+1)
|
||||
} else {
|
||||
assert.Equal(t, 0, strings.Count(s, " "))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user