packages feed

ascii-char-1.0.1.0: test/Main.hs

module Main (main) where

import ASCII.Char

import Data.Function (($))
import Data.List (length, sort)
import Data.Maybe (Maybe (..))
import Prelude (maxBound, minBound)
import System.IO (IO)
import Test.Hspec (describe, hspec, it, shouldBe)

main :: IO ()
main = hspec $ do

    describe "toInt" $ do
        let c ~> n = toInt c `shouldBe` n

        it "Null   → 0"   $ Null           ~> 0
        it "A      → 65"  $ CapitalLetterA ~> 65
        it "a      → 97"  $ SmallLetterA   ~> 97
        it "Delete → 127" $ Delete         ~> 127

    describe "toWord8" $ do
        let c ~> n = toWord8 c `shouldBe` n

        it "Null   → 0"   $ Null           ~> 0
        it "A      → 65"  $ CapitalLetterA ~> 65
        it "a      → 97"  $ SmallLetterA   ~> 97
        it "Delete → 127" $ Delete         ~> 127

    describe "fromIntMaybe" $ do
        let n ~> c = fromIntMaybe n `shouldBe` c

        it "-1  → Nothing" $ (-1) ~> Nothing
        it "0   → Null"    $ 0    ~> Just Null
        it "65  → A"       $ 65   ~> Just CapitalLetterA
        it "127 → Delete"  $ 127  ~> Just Delete
        it "128 → Nothing" $ 128  ~> Nothing

    describe "fromWord8Maybe" $ do
        let n ~> c = fromWord8Maybe n `shouldBe` c

        it "0   → Null"    $ 0    ~> Just Null
        it "65  → A"       $ 65   ~> Just CapitalLetterA
        it "127 → Delete"  $ 127  ~> Just Delete
        it "128 → Nothing" $ 128  ~> Nothing

    describe "fromIntUnsafe" $ do
        let n ~> c = fromIntUnsafe n `shouldBe` c

        it "0  → Null"    $ 0  ~> Null
        it "65 → A"       $ 65 ~> CapitalLetterA
        it "66 → B"       $ 66 ~> CapitalLetterB
        it "67 → C"       $ 67 ~> CapitalLetterC
        it "127 → Delete" $ 127  ~> Delete

    describe "fromWord8Unsafe" $ do
        let n ~> c = fromWord8Unsafe n `shouldBe` c

        it "0  → Null"    $ 0  ~> Null
        it "65 → A"       $ 65 ~> CapitalLetterA
        it "66 → B"       $ 66 ~> CapitalLetterB
        it "67 → C"       $ 67 ~> CapitalLetterC
        it "127 → Delete" $ 127  ~> Delete

    describe "allCharacters" $ do
        let x = allCharacters

        it "has 128 items" $ length x `shouldBe` 128
        it "is sorted"     $ sort x `shouldBe` x

    describe "Bounded" $ do
        it "min bound is Null"   $ minBound `shouldBe` Null
        it "max bound is Delete" $ maxBound `shouldBe` Delete