Added first test suite for Mapping

This commit is contained in:
Jonas Betzendahl 2014-04-28 16:34:13 +02:00
parent f5f1f760cd
commit 07dac9aad1
4 changed files with 26 additions and 25 deletions

View File

@ -53,8 +53,8 @@ executable Pioneers
test-suite QuickCheckTests test-suite QuickCheckTests
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
hs-source-dirs: tests, src hs-source-dirs: tests/Map, src
main-is: MainTestSuite.hs main-is: MapTestSuite.hs
build-depends: base, build-depends: base,
OpenGL >=2.9, OpenGL >=2.9,
bytestring >=0.10, bytestring >=0.10,
@ -78,5 +78,6 @@ test-suite QuickCheckTests
attoparsec-binary >= 0.1, attoparsec-binary >= 0.1,
QuickCheck, QuickCheck,
test-framework, test-framework,
test-framework-th,
test-framework-quickcheck2 test-framework-quickcheck2
Default-Language: Haskell2010 Default-Language: Haskell2010

View File

@ -39,6 +39,3 @@ giveNeighbourhood mp n (a,b) = let ns = giveNeighbours mp (a,b) in
-- removing duplicates in O(n log n), losing order and adding Ord requirement -- removing duplicates in O(n log n), losing order and adding Ord requirement
remdups :: Ord a => [a] -> [a] remdups :: Ord a => [a] -> [a]
remdups = map head . group . sort remdups = map head . group . sort
prop_rd_idempot :: [Int] -> Bool
prop_rd_idempot xs = remdups xs == (remdups . remdups) xs

View File

@ -1,20 +0,0 @@
module Main where
import Test.Framework
import Test.Framework.Providers.QuickCheck2
import Map.Map
main :: IO ()
main = defaultMain tests
tests :: [Test]
tests =
[
testGroup "Map.Map"
[
testProperty "remdups idempotency" prop_rd_idempot
]
]

23
tests/Map/MapTestSuite.hs Normal file
View File

@ -0,0 +1,23 @@
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Test.QuickCheck
import Test.Framework
import Test.Framework.TH
import Test.Framework.Providers.QuickCheck2
import Map.Map
main :: IO ()
main = $(defaultMainGenerator)
prop_rd_idempot :: [Int] -> Bool
prop_rd_idempot xs = remdups xs == (remdups . remdups) xs
prop_rd_length :: [Int] -> Bool
prop_rd_length xs = length (remdups xs) <= length xs
prop_rd_sorted :: [Int] -> Property
prop_rd_sorted xs = (not . null) xs ==> head (remdups xs) == minimum xs