module Main where import Text.ANTLR.Allstar.ATN import Text.ANTLR.Allstar.Example.ATN import Text.ANTLR.Set (fromList, (\\)) import System.IO.Unsafe (unsafePerformIO) import Data.Monoid import Test.Framework import Test.Framework.Providers.HUnit import Test.Framework.Providers.QuickCheck2 import Test.HUnit import Test.QuickCheck (Property, quickCheck, (==>)) import qualified Test.QuickCheck.Monadic as TQM -- ATNs should be same: test_paperATNGrammar = atnOf paperATNGrammar @?= exp_paperATN -- Set difference to make debugging easier: test_paperATNGrammar2 = ((_Δ . atnOf) paperATNGrammar \\ _Δ exp_paperATN) @?= fromList [] test_addPredicates = atnOf addPredicates @?= exp_addPredicates test_addPredicates2 = ((_Δ . atnOf) addPredicates \\ _Δ exp_addPredicates) @?= fromList [] test_addMutators = atnOf addMutators @?= exp_addMutators main :: IO () main = defaultMainWithOpts [ testCase "paper_ATN_Grammar" test_paperATNGrammar , testCase "paper_ATN_Grammar2" test_paperATNGrammar2 , testCase "paper_ATN_Predicates2" test_addPredicates2 , testCase "paper_ATN_Predicates" test_addPredicates , testCase "paper_ATN_Mutators" test_addMutators ] mempty