30 lines
971 B
Go
30 lines
971 B
Go
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")
|
|
}
|