From 666ea93dba377f267a2c8ecf97378a420db18383 Mon Sep 17 00:00:00 2001 From: Adam Scarr Date: Sun, 6 Aug 2017 23:32:10 +1000 Subject: Eliminate a bunch of allocations --- state_test.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 state_test.go (limited to 'state_test.go') diff --git a/state_test.go b/state_test.go new file mode 100644 index 0000000..fe04a58 --- /dev/null +++ b/state_test.go @@ -0,0 +1,45 @@ +package parsec + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestState_Advance(t *testing.T) { + ps := InputString("fooo") + require.Equal(t, 0, ps.Pos) + ps.Advance(2) + require.Equal(t, 2, ps.Pos) + ps.Advance(1) + require.Equal(t, 3, ps.Pos) +} + +func TestState_Get(t *testing.T) { + ps := InputString("fooo") + require.Equal(t, "fooo", ps.Get()) + ps.Advance(1) + require.Equal(t, "ooo", ps.Get()) + ps.Advance(4) + require.Equal(t, "", ps.Get()) + ps.Advance(10) + require.Equal(t, "", ps.Get()) +} + +func TestState_Errors(t *testing.T) { + ps := InputString("fooo") + + ps.ErrorHere("hello") + require.Equal(t, "offset 0: Expected hello", ps.Error.Error()) + require.Equal(t, 0, ps.Error.Pos()) + require.True(t, ps.Errored()) + + ps.ClearError() + require.False(t, ps.Errored()) + + ps.Advance(2) + ps.ErrorHere("hello2") + require.Equal(t, "offset 2: Expected hello2", ps.Error.Error()) + require.Equal(t, 2, ps.Error.Pos()) + require.True(t, ps.Errored()) +} -- cgit v1.2.3