summaryrefslogtreecommitdiff
path: root/combinator_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'combinator_test.go')
-rw-r--r--combinator_test.go44
1 files changed, 11 insertions, 33 deletions
diff --git a/combinator_test.go b/combinator_test.go
index 401c5d6..c7ae794 100644
--- a/combinator_test.go
+++ b/combinator_test.go
@@ -6,16 +6,8 @@ import (
"github.com/stretchr/testify/require"
)
-func TestNil(t *testing.T) {
- node, p2 := runParser("hello world", Nil)
-
- require.Equal(t, Node{}, node)
- require.Equal(t, 0, p2.Pos)
- require.False(t, p2.Errored())
-}
-
-func TestAnd(t *testing.T) {
- parser := And("hello", "world")
+func TestSeq(t *testing.T) {
+ parser := Seq("hello", "world")
t.Run("matches sequence", func(t *testing.T) {
node, p2 := runParser("hello world", parser)
@@ -29,10 +21,6 @@ func TestAnd(t *testing.T) {
require.Equal(t, 6, p2.Error.pos)
require.Equal(t, 0, p2.Pos)
})
-
- t.Run("No parsers", func(t *testing.T) {
- assertNilParser(t, And())
- })
}
func TestMaybe(t *testing.T) {
@@ -60,8 +48,8 @@ func TestAny(t *testing.T) {
t.Run("Returns longest error", func(t *testing.T) {
_, p2 := runParser("hello world!", Any(
"nope",
- And("hello", "world", "."),
- And("hello", "brother"),
+ Seq("hello", "world", "."),
+ Seq("hello", "brother"),
))
require.Equal(t, "offset 11: Expected .", p2.Error.Error())
require.Equal(t, 11, p2.Error.Pos())
@@ -73,34 +61,30 @@ func TestAny(t *testing.T) {
require.Equal(t, Node{}, node)
require.Equal(t, 0, p2.Pos)
})
-
- t.Run("No parsers", func(t *testing.T) {
- assertNilParser(t, Any())
- })
}
-func TestKleene(t *testing.T) {
+func TestSome(t *testing.T) {
t.Run("Matches sequence with sep", func(t *testing.T) {
- node, p2 := runParser("a,b,c,d,e,", Kleene(Chars("a-g"), ","))
+ node, p2 := runParser("a,b,c,d,e,", Some(Chars("a-g"), ","))
require.False(t, p2.Errored())
assertSequence(t, node, "a", "b", "c", "d", "e")
require.Equal(t, 10, p2.Pos)
})
t.Run("Matches sequence without sep", func(t *testing.T) {
- node, p2 := runParser("a,b,c,d,e,", Kleene(Any(Chars("a-g"), ",")))
+ node, p2 := runParser("a,b,c,d,e,", Some(Any(Chars("a-g"), ",")))
assertSequence(t, node, "a", ",", "b", ",", "c", ",", "d", ",", "e", ",")
require.Equal(t, 10, p2.Pos)
})
t.Run("splits words automatically on space", func(t *testing.T) {
- node, p2 := runParser("hello world", Kleene(Chars("a-z")))
+ node, p2 := runParser("hello world", Some(Chars("a-z")))
assertSequence(t, node, "hello", "world")
require.Equal(t, "", p2.Get())
})
t.Run("Stops on error", func(t *testing.T) {
- node, p2 := runParser("a,b,c,d,e,", Kleene(Chars("a-c"), ","))
+ node, p2 := runParser("a,b,c,d,e,", Some(Chars("a-c"), ","))
assertSequence(t, node, "a", "b", "c")
require.Equal(t, 6, p2.Pos)
require.Equal(t, "d,e,", p2.Get())
@@ -139,7 +123,7 @@ type htmlTag struct {
}
func TestMap(t *testing.T) {
- parser := Map(And("<", Chars("a-zA-Z0-9"), ">"), func(n Node) Node {
+ parser := Map(Seq("<", Chars("a-zA-Z0-9"), ">"), func(n Node) Node {
return Node{Result: htmlTag{n.Child[1].Token}}
})
@@ -157,7 +141,7 @@ func TestMap(t *testing.T) {
func TestMerge(t *testing.T) {
var bracer Parser
- bracer = And("(", Maybe(&bracer), ")")
+ bracer = Seq("(", Maybe(&bracer), ")")
parser := Merge(bracer)
t.Run("sucess", func(t *testing.T) {
@@ -172,12 +156,6 @@ func TestMerge(t *testing.T) {
})
}
-func assertNilParser(t *testing.T, parser Parser) {
- node, p2 := runParser("fff", parser)
- require.Equal(t, Node{}, node)
- require.Equal(t, 0, p2.Pos)
-}
-
func assertSequence(t *testing.T, node Node, expected ...string) {
require.NotNil(t, node)
actual := []string{}