{-# LANGUAGE QuasiQuotes #-} module Main where import Text.InterpolatedString.QQ import Test.HUnit data Foo = Foo Int String deriving Show t1 = "value" testEmpty = assertBool "" ([$istr||] == "") testNumLiteral = assertBool "" ([$istr|#{3}|] == "3") testString = assertBool "" ([$istr|a string #{t1} is here|] == "a string value is here") testEscape = assertBool "" ([$istr|#\{}|] == "#{}" && [$istr|\#{}|] == "#{}") testComplex = assertBool "" ([$istr| ok #{Foo 4 "Great!" : [Foo 3 "Scott!"]} then |] == ("\n" ++ " ok\n" ++ "[Foo 4 \"Great!\",Foo 3 \"Scott!\"]\n" ++ " then\n")) tests = TestList [ TestLabel "Empty String" $ TestCase testEmpty , TestLabel "Number Literal" $ TestCase testNumLiteral , TestLabel "String Variable" $ TestCase testString , TestLabel "Escape Sequences" $ TestCase testEscape , TestLabel "Complex Expression" $ TestCase testComplex ] main = runTestTT tests