package list import ( "github.com/stretchr/testify/assert" "testing" ) func TestReadConj(t *testing.T) { l := New().Conj(5).Conj(6).Conj(7) assert.Equal(t, "(7 6 5)", l.String(), "should insert at head") l = Conj(New(), 4) assert.Equal(t, "(4 5)", l.String(), "should insert at head") } func TestReadFirst(t *testing.T) { l := New().Conj(5).Conj(6).Conj(7) assert.Equal(t, 7, l.First(), "should return first element") assert.Equal(t, nil, New().First(), "should return nil") } func TestReadRest(t *testing.T) { l := New().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") var nilPtr *List = nil assert.Equal(t, nilPtr, New().Rest(), "should return rest sublist") assert.Equal(t, nilPtr, Rest(New().Rest()), "should return rest sublist") }