summaryrefslogtreecommitdiff
path: root/combinator_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'combinator_test.go')
-rw-r--r--combinator_test.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/combinator_test.go b/combinator_test.go
index 5ac227f..acf0e84 100644
--- a/combinator_test.go
+++ b/combinator_test.go
@@ -163,12 +163,23 @@ func TestBind(t *testing.T) {
}
func TestCut(t *testing.T) {
- // does backtracking happen anywhere else?
t.Run("test any", func(t *testing.T) {
_, ps := runParser("var world", Any(Seq("var", Cut, "hello"), "var world"))
require.Equal(t, "offset 4: expected hello", ps.Error.Error())
require.Equal(t, 0, ps.Pos)
})
+
+ t.Run("test many", func(t *testing.T) {
+ _, ps := runParser("hello <world", Many(Any(Seq("<", Cut, Chars("a-z"), ">"), Chars("a-z"))))
+ require.Equal(t, "offset 12: expected >", ps.Error.Error())
+ require.Equal(t, 0, ps.Pos)
+ })
+
+ t.Run("test maybe", func(t *testing.T) {
+ _, ps := runParser("var", Maybe(Seq("var", Cut, "hello")))
+ require.Equal(t, "offset 3: expected hello", ps.Error.Error())
+ require.Equal(t, 0, ps.Pos)
+ })
}
func TestMerge(t *testing.T) {