diff options
author | Adam Scarr <adam@vektah.net> | 2017-08-06 17:28:34 +1000 |
---|---|---|
committer | Adam Scarr <adam@vektah.net> | 2017-08-06 17:28:34 +1000 |
commit | 2c0c5b628fd0b8e7499574d379b4138630f886d7 (patch) | |
tree | 20be82a411649f8f80281c6f73977e0d797858eb /parser_test.go | |
parent | a65a9325aaebd1499a8e523463cc023124f8536a (diff) |
Add String parser
Diffstat (limited to 'parser_test.go')
-rw-r--r-- | parser_test.go | 26 |
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()) + }) +} |