package list import ( "github.com/stretchr/testify/assert" "testing" ) func TestReadString(t *testing.T) { assert.Equal(t, "()", Empty().String(), "should insert at head") } func TestReadConj(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 TestReadFirst(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 TestReadRest(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(), Rest(Empty().Rest()), "should return rest sublist") }