summaryrefslogtreecommitdiff
path: root/parser_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser_test.go')
-rw-r--r--parser_test.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/parser_test.go b/parser_test.go
index e9da404..09cf7f4 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -102,6 +102,13 @@ func TestChars(t *testing.T) {
require.False(t, ps.Errored())
})
+ t.Run("escaped hyphen", func(t *testing.T) {
+ node, ps := runParser(`ab-ab\cde`, Chars(`a\-b`))
+ require.Equal(t, "ab-ab", node.Token)
+ require.Equal(t, `\cde`, ps.Get())
+ require.False(t, ps.Errored())
+ })
+
t.Run("no match", func(t *testing.T) {
_, ps := runParser("ffffff", Chars("0-9"))
require.Equal(t, "offset 0: expected 0-9", ps.Error.Error())
@@ -185,6 +192,19 @@ func TestParseString(t *testing.T) {
})
}
+func TestAutoWS(t *testing.T) {
+ t.Run("ws is not automatically consumed", func(t *testing.T) {
+ _, ps := runParser(" hello", NoAutoWS("hello"))
+ require.Equal(t, "offset 0: expected hello", ps.Error.Error())
+ })
+
+ t.Run("ws is can be explicitly consumed ", func(t *testing.T) {
+ result, ps := runParser(" hello", NoAutoWS(Seq(WS(), "hello")))
+ require.Equal(t, "hello", result.Child[1].Token)
+ require.Equal(t, "", ps.Get())
+ })
+}
+
func runParser(input string, parser Parser) (Result, *State) {
ps := NewState(input)
result := parser(ps)