summaryrefslogtreecommitdiff
path: root/combinator_test.go
diff options
context:
space:
mode:
authorAdam Scarr <adam@vektah.net>2017-08-10 21:58:14 +1000
committerAdam Scarr <adam@vektah.net>2017-08-10 22:01:06 +1000
commita0e66b1c46ec57218f8a95a21ace7cbbceb29ec2 (patch)
tree630056d07ca6b44f7a747b7872ba422c6c301d85 /combinator_test.go
parentaf542eff9e1e51561a9efa37685ee07b1d01b53e (diff)
Document cuts
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) {