packages feed

emgm-0.2: tests/ZipWith.hs

{-# LANGUAGE FlexibleContexts #-}

module ZipWith (tests) where

import Prelude hiding (zipWith, zip)
import qualified Prelude as P (zipWith, zip)
import Test.HUnit
import Generics.EMGM

-----------------------------------------------------------------------------
-- Tests
-----------------------------------------------------------------------------

test_zipWith1 =
  let ls = [1..7::Int]
      sl = reverse ls
  in "zipWith1" ~: zipWith (+) ls sl ~?= Just (P.zipWith (+) ls sl)

test_zipWith2 =
  let ls = [1..7::Int]
      sl = [1..8::Int]
  in "zipWith2" ~: zipWith (+) ls sl ~?= Nothing

test_zip1 =
  let ls = [1..7::Int]
      sl = reverse ls
  in "zip1" ~: zip ls sl ~?= Just (P.zip ls sl)
  
test_zip2 =
  let ls = [1..7::Int]
      sl = 8 : reverse ls
  in "zip2" ~: zip ls sl ~?= Nothing -- zip does not behave like P.zip.

-----------------------------------------------------------------------------
-- Test collection
-----------------------------------------------------------------------------

tests =
  "ZipWith" ~:
    [ test_zipWith1
    , test_zipWith2
    , test_zip1
    , test_zip2
    ]