packages feed

generic-enum-0.1.0.0: test/Tests.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeApplications #-}
module Main where

import Prelude hiding (
  Enum, fromEnum, toEnum, succ, pred, enumFrom, enumFromThen, enumFromTo, enumFromThenTo
  )
import qualified Prelude as P
import Data.Generic.Enum

import Data.Generic.Enum (
  Element
  )

import Data.Proxy (Proxy(Proxy))
import Data.Ratio (Rational, (%))
import Data.Array (Array)
import Data.Word (Word8)

import qualified Data.ByteString as B

import Test.Hspec (hspec, it, shouldBe)

n1_int :: Int
n1_int = 2

n2_int :: Int
n2_int = 5

n1_rational :: Rational
n1_rational = 7 % 3

n2_rational :: Rational
n2_rational = 6 % 1

_a :: Word8
_a = P.toEnum (P.fromEnum 'a')

_e :: Word8
_e = P.toEnum (P.fromEnum 'e')

main = hspec $ do
  it "enumFromTo integer test" $ enumFromTo n1_int n2_int `shouldBe` P.enumFromTo n1_int n2_int
  it "enumFromTo rational test" $ sum ((enumFromTo n1_rational n2_rational) :: [Rational]) `shouldBe` (46 % 3)
  it "enumFromTo bytestring test" $ enumFromTo _a _e `shouldBe` B.pack [_a.._e]