{-# LANGUAGE QuasiQuotes #-} module Data.Cfg.BnfTests(tests) where import Data.Cfg.Bnf import Data.Cfg.Cfg import Data.Cfg.FreeCfg import qualified Data.Set as S import Test.Framework(Test, testGroup) import Test.Framework.Providers.HUnit(testCase) import Test.HUnit(assertEqual) tests :: Test tests = testGroup "Data.Cfg.Bnf" [ test ] test :: Test test = testCase "bnf quasiquoter sanity test" $ do assertEqual "startSymbol works" "foo" (startSymbol cfg') assertEqual "terminals works" 5 (S.size $ terminals cfg') assertEqual "nonterminals works" 2 (S.size $ nonterminals cfg') assertEqual "productions count works" 3 (length $ productions cfg') where cfg' = toFreeCfg gram' gram' = [bnf|foo ::= A B C D bar. foo ::= . bar ::= E A B. |] {- Test code for yieldCfg. import Data.Cfg.RuleApplication py :: Int -> IO () py n = mapM_ print $ take n y where y = yieldCfg cfg cfg = gramToCfg' gram' gram' = [gram|digits ::= digit | digit digits . digit ::= O | I . |] -}