package ps import "testing" func TestListImmutable(t *testing.T) { // build some lists one := NewList().Cons("first") two := one.Cons("second") zwei := one.Cons("zweite") // check each list's length if size := one.Size(); size != 1 { t.Errorf("one doesn't have 1 item, it has %d", size) } if size := two.Size(); size != 2 { t.Errorf("two doesn't have 2 items, it has %d", size) } if size := zwei.Size(); size != 2 { t.Errorf("zwei doesn't have 2 item, it has %d", size) } // check each list's contents if one.Head() != "first" { t.Errorf("one has the wrong head") } if two.Head() != "second" { t.Errorf("two has the wrong head") } if two.Tail().Head() != "first" { t.Errorf("two has the wrong ending") } if zwei.Head() != "zweite" { t.Errorf("zwei has the wrong head") } if zwei.Tail().Head() != "first" { t.Errorf("zwei has the wrong ending") } } // benchmark making a really long list func BenchmarkListCons(b *testing.B) { l := NewList() for i := 0; i < b.N; i++ { l = l.Cons(i) } }