packages feed

ascii85x-0.2.4.1: test/Spec.hs

{-# LANGUAGE OverloadedStrings #-}
import Hedgehog
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range

import Data.Word

import Data.TI85

invalidID = [0x0b,0x13,0x14,0x16,0x1c]

validTypeID :: Word8 -> Bool
validTypeID val
    | val >= 0x00 && val <= 0x1e = val `notElem` invalidID
    | otherwise = False

-- | Generate a valid variable type ID
genTypeID :: Gen Word8
genTypeID = do
    Gen.filter validTypeID $ Gen.word8 (Range.linear 0x00 0x1e)


-- | Check ID mapping syncrhonization
idMapping :: Property
idMapping = property $ do
    idVal <- forAll genTypeID
    (typeToId.idToType) idVal === idVal

tests :: IO Bool
tests = checkParallel $ Group "Test.TI85" [
    ("idMapping", idMapping)
    ]

main :: IO ()
main = do
    tests
    return ()