diff options
author | Adam Scarr <adam@vektah.net> | 2017-08-06 23:32:10 +1000 |
---|---|---|
committer | Adam Scarr <adam@vektah.net> | 2017-08-06 23:32:10 +1000 |
commit | 666ea93dba377f267a2c8ecf97378a420db18383 (patch) | |
tree | 5efee0b6e4ccf44b854d9bb65e4e6fa5e7f86548 /state_test.go | |
parent | 9d7779e8ca5404f26abbd8cce0314d9cee967bba (diff) |
Eliminate a bunch of allocations
Diffstat (limited to 'state_test.go')
-rw-r--r-- | state_test.go | 45 |
1 files changed, 45 insertions, 0 deletions
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()) +} |