packages feed

bitset-word8-0.1.1.1: test/Data/BitSetWord8Spec.hs

module Data.BitSetWord8Spec where

import           Data.Char             (chr)
import           Data.Word             (Word8)

import           Test.Hspec
import           Test.Hspec.QuickCheck (prop)
import           Test.QuickCheck

import           Data.BitSetWord8

spec :: Spec
spec = do
    describe "fromList" $ do
        prop "creates empty BitSetWord8 from empty list" $ forAll (choose (0, 0xff :: Word8)) $ \n ->
            member (fromList []) n `shouldBe` False

        prop "creates fullfilled BitSetWord8 from fullfilled list" $ forAll (choose (0, 0xff :: Word8)) $ \n ->
            member (fromList [chr 0 .. chr 0xff]) n `shouldBe` True

    describe "rfc5234Digit'" $ do
        prop "recognizes any digit" $ forAll (choose (0x30, 0x39 :: Word8)) $ \n ->
            member (fromList rfc5234Digit') n `shouldBe` True

        prop "unrecognizes any non-digit characters (lower)" $ forAll (choose (0, 0x2f :: Word8)) $ \n ->
            member (fromList rfc5234Digit') n `shouldBe` False

        prop "unrecognizes any non-digit characters (higher)" $ forAll (choose (0x3a, 0xff :: Word8)) $ \n ->
            member (fromList rfc5234Digit') n `shouldBe` False

    describe "rfc5234Alpha'" $ do
        prop "recognizes any upper case alphabet" $ forAll (choose (0x41, 0x5a :: Word8)) $ \n ->
            member (fromList rfc5234Alpha') n `shouldBe` True

        prop "recognizes any lower case alphabet" $ forAll (choose (0x61, 0x7a :: Word8)) $ \n ->
            member (fromList rfc5234Alpha') n `shouldBe` True

        prop "unrecognizes any non-alphabet (lower)" $ forAll (choose (0, 0x40 :: Word8)) $ \n ->
            member (fromList rfc5234Alpha') n `shouldBe` False

        prop "unrecognizes any non-alphabet (middle)" $ forAll (choose (0x5b, 0x60 :: Word8)) $ \n ->
            member (fromList rfc5234Alpha') n `shouldBe` False

        prop "unrecognizes any non-alphabet (higher)" $ forAll (choose (0x7b, 0xff :: Word8)) $ \n ->
            member (fromList rfc5234Alpha') n `shouldBe` False