tree-features: b97b27d35715c5978fef4d330914ed545e54fea1
1: module ProgramTests where
2:
3: import Test.Tasty (testGroup)
4: import Test.Tasty.QuickCheck (testProperty)
5: import Program
6: import Features
7: import SexprHelper
8: import Data.String.Utils
9: import qualified XmlTest
10: import qualified SexprTests
11: import qualified FeatureTest
12: import Test.QuickCheck
13:
14: canParseSexpr = all ((> 0) . leaves) (map parse SexprTests.exampleAsts)
15:
16: templateCanParseSexpr :: Int -> Int -> Property
17: templateCanParseSexpr b n = forAll (FeatureTest.sizedTreeOf n :: Gen (TreeOf String)) parses
18: where bits = abs b `mod` 31 + 1
19: parses t = inRange (mainTemplate' bits (treeToSexpr (fmap SexprTests.sanitise t)))
20: inRange x = length x <= fromIntegral bits
21:
22: templateGivesCsv :: Int -> Int -> Property
23: templateGivesCsv b n = forAll (FeatureTest.sizedTreeOf n :: Gen (TreeOf String)) parses
24: where bits = abs b `mod` 31 + 1
25: parses t = isCsv (mainTemplate bits (treeToSexpr (fmap SexprTests.sanitise t)))
26: isCsv s = let ns = split "," s
27: isNum n = show (read n :: Int) == n
28: pos n = (read n :: Int) >= 0
29: in all isNum ns && all pos ns
30:
31: tests = testGroup "Program tests"
32: [
33: testProperty "canParseSexpr" canParseSexpr
34: , testProperty "templateCanParseSexpr" templateCanParseSexpr
35: , testProperty "templateGivesCsv" templateGivesCsv
36: ]
Generated by git2html.