41 lines
1 KiB
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 TestSplit(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.Split()
|
|
// 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)
|
|
}
|