interpolate-0.2.1: test/Data/String/Interpolate/ParseSpec.hs
{-# LANGUAGE StandaloneDeriving #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.String.Interpolate.ParseSpec (main, spec) where
import Test.Hspec
import Data.String.Interpolate.Parse
deriving instance Eq a => Eq (Node a)
deriving instance Show a => Show (Node a)
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "parseNodes" $ do
it "parses string literals" $ do
parseNodes "foo" `shouldBe` [Literal "foo"]
it "parses abstractions" $ do
parseNodes "#{}" `shouldBe` [Abstraction ()]
it "parses expressions" $ do
parseNodes "#{foo}" `shouldBe` [Expression "foo"]
it "parses embedded expressions" $ do
parseNodes "foo #{bar} baz" `shouldBe` [Literal "foo ", Expression "bar", Literal " baz"]
context "when given an unterminated expression" $ do
it "parses it as a string literal" $ do
parseNodes "foo #{bar" `shouldBe` [Literal "foo #{bar"]