summaryrefslogtreecommitdiff
path: root/parser_test.go
diff options
context:
space:
mode:
authorAdam Scarr <adam@vektah.net>2017-08-06 17:28:34 +1000
committerAdam Scarr <adam@vektah.net>2017-08-06 17:28:34 +1000
commit2c0c5b628fd0b8e7499574d379b4138630f886d7 (patch)
tree20be82a411649f8f80281c6f73977e0d797858eb /parser_test.go
parenta65a9325aaebd1499a8e523463cc023124f8536a (diff)
Add String parser
Diffstat (limited to 'parser_test.go')
-rw-r--r--parser_test.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/parser_test.go b/parser_test.go
index a560c8c..4d60781 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -178,3 +178,29 @@ func TestParseString(t *testing.T) {
require.Equal(t, "offset 0: Expected world", err.Error())
})
}
+
+func TestString(t *testing.T) {
+ t.Run("test basic match", func(t *testing.T) {
+ result, p := String('"')(Pointer{`"hello"`, 0})
+ require.Equal(t, `hello`, result)
+ require.Equal(t, "", p.Get())
+ })
+
+ t.Run("test non match", func(t *testing.T) {
+ result, p := String('"')(Pointer{`1`, 0})
+ require.Equal(t, NewError(0, `Expected "`), result)
+ require.Equal(t, `1`, p.Get())
+ })
+
+ t.Run("test unterminated string", func(t *testing.T) {
+ result, p := String('"')(Pointer{`"hello `, 0})
+ require.Equal(t, NewError(0, `Unterminated string`), result)
+ require.Equal(t, `"hello `, p.Get())
+ })
+
+ t.Run("test escaping", func(t *testing.T) {
+ result, p := String('"')(Pointer{`"hello \"world\""`, 0})
+ require.Equal(t, `hello "world"`, result)
+ require.Equal(t, ``, p.Get())
+ })
+}