mal-go/list/list_test.go
ajet 4e1cbce3a7
Some checks failed
Go / test (push) Failing after 28s
start the tower of abstractions
2025-11-04 12:25:23 -10:00

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")
}