Setup test suite for alias parsing.

This commit is contained in:
Robin Heggelund Hansen 2022-11-11 10:16:01 +01:00
parent 36e6417829
commit d7cf013116
No known key found for this signature in database
2 changed files with 43 additions and 0 deletions

View File

@ -252,6 +252,7 @@ Test-Suite gren-tests
-- tests
Integration.FormatSpec
Parse.AliasSpec
Parse.RecordUpdateSpec
Parse.SpaceSpec
Parse.UnderscorePatternSpec

42
tests/Parse/AliasSpec.hs Normal file
View File

@ -0,0 +1,42 @@
{-# LANGUAGE OverloadedStrings #-}
module Parse.AliasSpec where
import AST.Source qualified as Src
import Data.Name qualified as Name
import Data.ByteString qualified as BS
import Helpers.Instances ()
import Parse.Primitives qualified as P
import Parse.Module qualified as Module
import Reporting.Error.Syntax qualified as Error.Syntax
import Test.Hspec (Spec, describe, it, shouldSatisfy)
spec :: Spec
spec = do
describe "Import alias" $ do
it "regression test" $
parse
"Module"
"import Some.Long.Module as Module\n"
it "Aliases can have dots in them" $ do
parse
"My.Module"
"import Some.Long.Module as My.Module\n"
parse :: String -> BS.ByteString -> IO ()
parse expectedAlias str =
let checkResult result =
case result of
Right imp ->
case Src._alias imp of
Just alias ->
Name.toChars alias == expectedAlias
Nothing ->
False
Left _ ->
False
in shouldSatisfy
(P.fromByteString Module.chompImport Error.Syntax.ModuleBadEnd str)
checkResult