FORTH-ish interpreter
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
prosper/mem_test.go

69 lines
1.0 KiB

package main
import (
"testing"
)
func TestMemWrite(t *testing.T) {
m := Memory{
intern: make(map[int]int),
}
// write in some memory, not starting at the head
err := m.Write(1, []int{1, 2, 3})
if err != nil {
t.Log(err.Error())
t.Fail()
}
// only three values in memory
if len(m.intern) != 3 {
t.Fail()
}
if m.NextFreeAddress() != 4 {
t.Log("expected nextFree to be 4, got", m.nextFree)
t.Fail()
}
// can't write to negative addresses
if m.Write(-1, []int{1}) == nil {
t.Fail()
}
}
func TestMemRead(t *testing.T) {
m := Memory{
intern: map[int]int{0: 1, 1: 2, 2: 3, 100: 101},
}
// Read two known locations
r := m.Read(0, 2)
if len(r) != 2 {
t.Fail()
}
if r[0] != 1 || r[1] != 2 {
t.Fail()
}
// Read past known memory
r2 := m.Read(100, 2)
if len(r2) != 2 {
t.Fail()
}
if r2[0] != 101 || r2[1] != 0 {
t.Fail()
}
// read empty memory
m2 := Memory{
intern: map[int]int{},
}
r3 := m2.Read(0, 100)
if len(r3) != 100 {
t.Fail()
}
for i := range r3 {
if r3[i] != 0 {
t.Fail()
}
}
}