package list import ( "github.com/stretchr/testify/assert" "testing" ) func TestReadConj(t *testing.T) { l := Empty().Conj(5).Conj(6).Conj(7) assert.Equal(t, "(7 6 5)", 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") assert.Equal(t, 5, New(5).First(), "should get first from New") } 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") }