29 lines
669 B
Go
29 lines
669 B
Go
package scopes_test
|
|
|
|
import (
|
|
tbase "testing"
|
|
|
|
"git.sr.ht/~cco/go-scopes/common/testing"
|
|
"git.sr.ht/~cco/go-scopes/forge"
|
|
"git.sr.ht/~cco/go-scopes/forge/builtins"
|
|
)
|
|
|
|
func TestForge(tb *tbase.T) {
|
|
t := testing.SetUp(tb)
|
|
t.Run("exec", ExecTest)
|
|
}
|
|
|
|
func ExecTest(t *testing.T) {
|
|
fe := forge.NewFE()
|
|
b := builtins.Get(fe)
|
|
c1 := fe.Code(b.Lit, 4, b.Lit, 2, b.Add)
|
|
fe.Call(c1)
|
|
t.AssertEqual(fe.Pop(), 6)
|
|
sq := fe.Def("square", b.Dup, b.Mult)
|
|
fe.Exec(b.Lit, 3, sq, b.Lit, 2, b.Add)
|
|
t.AssertEqual(fe.Pop(), 11)
|
|
seven := fe.Create("seven", 7, fe.Code(b.Get))
|
|
//fe.Exec(b.Lit, 7, seven, b.Put)
|
|
fe.Exec(b.Lit, 3, seven, sq, b.Add)
|
|
t.AssertEqual(fe.Pop(), 52)
|
|
}
|