summaryrefslogtreecommitdiff
path: root/tests/Language/GraphQL/LexerSpec.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2019-11-03 10:42:10 +0100
committerEugen Wissner <belka@caraus.de>2019-11-03 11:00:18 +0100
commit73fc334bf8d7bd6d8b83143995844ca0968ceeda (patch)
tree0f4e2e31b5e3dd031a2fbd5f078eb741e5b3e931 /tests/Language/GraphQL/LexerSpec.hs
parent417ff5da7d0db6c8e73a238c17368192a3515a93 (diff)
downloadgraphql-73fc334bf8d7bd6d8b83143995844ca0968ceeda.tar.gz
Move related modules to Language.GraphQL.AST
Fixes #18. - `Language.GraphQL.Encoder` moved to `Language.GraphQL.AST.Encoder`. - `Language.GraphQL.Parser` moved to `Language.GraphQL.AST.Parser`. - `Language.GraphQL.Lexer` moved to `Language.GraphQL.AST.Lexer`. - All `Language.GraphQL.AST.Value` data constructor prefixes were removed. The module should be imported qualified. - All `Language.GraphQL.AST.Core.Value` data constructor prefixes were removed. The module should be imported qualified. - `Language.GraphQL.AST.Transform` is now isn't exposed publically anymore.
Diffstat (limited to 'tests/Language/GraphQL/LexerSpec.hs')
-rw-r--r--tests/Language/GraphQL/LexerSpec.hs92
1 files changed, 0 insertions, 92 deletions
diff --git a/tests/Language/GraphQL/LexerSpec.hs b/tests/Language/GraphQL/LexerSpec.hs
deleted file mode 100644
index 274b29a..0000000
--- a/tests/Language/GraphQL/LexerSpec.hs
+++ /dev/null
@@ -1,92 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE QuasiQuotes #-}
-module Language.GraphQL.LexerSpec
- ( spec
- ) where
-
-import Data.Text (Text)
-import Data.Void (Void)
-import Language.GraphQL.Lexer
-import Test.Hspec (Spec, context, describe, it)
-import Test.Hspec.Megaparsec (shouldParse, shouldSucceedOn)
-import Text.Megaparsec (ParseErrorBundle, parse)
-import Text.RawString.QQ (r)
-
-spec :: Spec
-spec = describe "Lexer" $ do
- context "Reference tests" $ do
- it "accepts BOM header" $
- parse unicodeBOM "" `shouldSucceedOn` "\xfeff"
-
- it "lexes strings" $ do
- parse string "" [r|"simple"|] `shouldParse` "simple"
- parse string "" [r|" white space "|] `shouldParse` " white space "
- parse string "" [r|"quote \""|] `shouldParse` [r|quote "|]
- parse string "" [r|"escaped \n"|] `shouldParse` "escaped \n"
- parse string "" [r|"slashes \\ \/"|] `shouldParse` [r|slashes \ /|]
- parse string "" [r|"unicode \u1234\u5678\u90AB\uCDEF"|]
- `shouldParse` "unicode ሴ噸邫췯"
-
- it "lexes block string" $ do
- parse blockString "" [r|"""simple"""|] `shouldParse` "simple"
- parse blockString "" [r|""" white space """|]
- `shouldParse` " white space "
- parse blockString "" [r|"""contains " quote"""|]
- `shouldParse` [r|contains " quote|]
- parse blockString "" [r|"""contains \""" triplequote"""|]
- `shouldParse` [r|contains """ triplequote|]
- parse blockString "" "\"\"\"multi\nline\"\"\"" `shouldParse` "multi\nline"
- parse blockString "" "\"\"\"multi\rline\r\nnormalized\"\"\""
- `shouldParse` "multi\nline\nnormalized"
- parse blockString "" "\"\"\"multi\rline\r\nnormalized\"\"\""
- `shouldParse` "multi\nline\nnormalized"
- parse blockString "" [r|"""unescaped \n\r\b\t\f\u1234"""|]
- `shouldParse` [r|unescaped \n\r\b\t\f\u1234|]
- parse blockString "" [r|"""slashes \\ \/"""|]
- `shouldParse` [r|slashes \\ \/|]
- parse blockString "" [r|"""
-
- spans
- multiple
- lines
-
- """|] `shouldParse` "spans\n multiple\n lines"
-
- it "lexes numbers" $ do
- parse integer "" "4" `shouldParse` (4 :: Int)
- parse float "" "4.123" `shouldParse` 4.123
- parse integer "" "-4" `shouldParse` (-4 :: Int)
- parse integer "" "9" `shouldParse` (9 :: Int)
- parse integer "" "0" `shouldParse` (0 :: Int)
- parse float "" "-4.123" `shouldParse` (-4.123)
- parse float "" "0.123" `shouldParse` 0.123
- parse float "" "123e4" `shouldParse` 123e4
- parse float "" "123E4" `shouldParse` 123E4
- parse float "" "123e-4" `shouldParse` 123e-4
- parse float "" "123e+4" `shouldParse` 123e+4
- parse float "" "-1.123e4" `shouldParse` (-1.123e4)
- parse float "" "-1.123E4" `shouldParse` (-1.123E4)
- parse float "" "-1.123e-4" `shouldParse` (-1.123e-4)
- parse float "" "-1.123e+4" `shouldParse` (-1.123e+4)
- parse float "" "-1.123e4567" `shouldParse` (-1.123e4567)
-
- it "lexes punctuation" $ do
- parse bang "" "!" `shouldParse` '!'
- parse dollar "" "$" `shouldParse` '$'
- runBetween parens `shouldSucceedOn` "()"
- parse spread "" "..." `shouldParse` "..."
- parse colon "" ":" `shouldParse` ":"
- parse equals "" "=" `shouldParse` "="
- parse at "" "@" `shouldParse` '@'
- runBetween brackets `shouldSucceedOn` "[]"
- runBetween braces `shouldSucceedOn` "{}"
- parse pipe "" "|" `shouldParse` "|"
-
- context "Implementation tests" $ do
- it "lexes empty block strings" $
- parse blockString "" [r|""""""|] `shouldParse` ""
- it "lexes ampersand" $
- parse amp "" "&" `shouldParse` "&"
-
-runBetween :: (Parser () -> Parser ()) -> Text -> Either (ParseErrorBundle Text Void) ()
-runBetween parser = parse (parser $ pure ()) ""