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.