gofunge98/pkg/pointer/pointer_test.go

41 lines
1 KiB
Go

package pointer
import (
"os"
"testing"
"git.adyxax.org/adyxax/gofunge/pkg/field"
"github.com/stretchr/testify/require"
)
func TestNewPointer(t *testing.T) {
require.Equal(t, NewPointer(), &Pointer{delta: &Delta{1, 0}})
}
func TestForkPointer(t *testing.T) {
file, err := os.Open("../field/test_data/hello.b98")
require.NoError(t, err, "Failed to open file")
defer file.Close()
f, err := field.Load(file)
require.NoError(t, err)
p := NewPointer()
p2 := p.ForkPointer()
// We check that p2 is a real copy
p.Step(*f)
p2.Step(*f)
require.Equal(t, p, &Pointer{x: 1, y: 0, delta: &Delta{1, 0}})
require.Equal(t, p2, &Pointer{x: 1, y: 0, delta: &Delta{1, 0}})
}
func TestStep(t *testing.T) { // Step is thoroughly tested in the field package
defaultPointer := NewPointer()
// File of one char
file, err := os.Open("../field/test_data/minimal.b98")
require.NoError(t, err, "Failed to open file")
defer file.Close()
f, err := field.Load(file)
require.NoError(t, err)
p := NewPointer()
p.Step(*f)
require.Equal(t, defaultPointer, p)
}