go-scopes/tests/forge_test.go

44 lines
887 B
Go

package scopes_test
import (
tbase "testing"
"git.sr.ht/~cco/go-scopes/forge/stack"
"git.sr.ht/~cco/go-scopes/forge/voc"
"git.sr.ht/~cco/go-scopes/testing"
)
func TestForge(tb *tbase.T) {
t := testing.SetUp(tb)
t.Run("stack", StackTest)
t.Run("voc", VocTest)
}
func StackTest(t *testing.T) {
var st stack.Stack[int] = stack.NewStack[int]()
st.Push(3)
st.Push(4)
t.AssertEqual(st.Depth(), 2)
st.Push(5)
t.AssertEqual(st.Peek(0), 5)
st.Replace(1, 99)
st.Push(6)
t.AssertEqual(st.Peek(2), 99)
st.Push(7)
st.Push(8)
st.Push(9)
t.AssertEqual(st.Peek(2), 7)
st.Pop()
t.AssertEqual(st.Pop(), 8)
t.AssertEqual(st.Peek(st.Depth()-1), 3)
}
func VocTest(t *testing.T) {
v1 := voc.NewVoc[int](nil)
v1.Register("one", 1)
m := v1.Lookup("one")
t.AssertEqual(m.IsNothing(), false)
t.AssertEqual(m.Value(), 1)
m = v1.Lookup("two")
t.AssertEqual(m.IsNothing(), true)
}