Last active
November 23, 2015 17:43
-
-
Save sanssecours/92e1746a04bcdbb719d2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Imports --------------------------------------------------------------------- | |
import Aufgabe5 (Nat(..), Zeichen(..), Ziffer(..), | |
isCanPR, mkCanPR, plusPR, minusPR, timesPR, divPR, | |
eqPR, neqPR, grPR, lePR, grEqPR, leEqPR) | |
import Test.HUnit | |
-- Numbers --------------------------------------------------------------------- | |
nat0 = Nat ((A, A, A), (Null, Null, Null)) | |
nat1 = Nat ((A, A, A), (Null, Null, Eins)) | |
nat2 = Nat ((A, A, A), (Null, Null, Zwei)) | |
nat3 = Nat ((A, A, A), (Null, Null, Drei)) | |
nat4 = Nat ((A, A, A), (Null, Null, Vier)) | |
nat5 = Nat ((A, A, A), (Null, Null, Fuenf)) | |
nat6 = Nat ((A, A, A), (Null, Null, Sechs)) | |
nat8 = Nat ((A, A, A), (Null, Null, Acht)) | |
nat11 = Nat ((A, A, A), (Null, Eins, Eins)) | |
nat14 = Nat ((A, A, A), (Null, Eins, Vier)) | |
nat15 = Nat ((A, A, A), (Null, Eins, Fuenf)) | |
nat20 = Nat ((A, A, A), (Null, Zwei, Null)) | |
nat24 = Nat ((A, A, A), (Null, Zwei, Vier)) | |
nat29 = Nat ((A, A, A), (Null, Zwei, Neun)) | |
nat30 = Nat ((A, A, A), (Null, Drei, Null)) | |
nat31 = Nat ((A, A, A), (Null, Drei, Eins)) | |
nat120 = Nat ((A, A, A), (Eins, Zwei, Null)) | |
nat123 = Nat ((A, A, A), (Eins, Zwei, Drei)) | |
nat200 = Nat ((A, A, A), (Zwei, Null, Null)) | |
nat823 = Nat ((A, A, A), (Acht, Zwei, Drei)) | |
nat1337 = Nat ((A, A, B), (Drei, Drei, Sieben)) | |
nat1500 = Nat ((A, A, B), (Fuenf, Null, Null)) | |
nat1600 = Nat ((A, A, B), (Sechs, Null, Null)) | |
nat1700 = Nat ((A, A, B), (Sieben, Null, Null)) | |
nat1750 = Nat ((A, A, B), (Sieben, Fuenf, Null)) | |
nat1751 = Nat ((A, A, B), (Sieben, Fuenf, Eins)) | |
nat1752 = Nat ((A, A, B), (Sieben, Fuenf, Zwei)) | |
nat1755 = Nat ((A, A, B), (Sieben, Fuenf, Fuenf)) | |
nat1760 = Nat ((A, A, B), (Sieben, Sechs, Null)) | |
nat1775 = Nat ((A, A, B), (Sieben, Sieben, Fuenf)) | |
nat1800 = Nat ((A, A, B), (Acht, Null, Null)) | |
nat1900 = Nat ((A, A, B), (Neun, Null, Null)) | |
nat1999 = Nat ((A, A, B), (Neun, Neun, Neun)) | |
nat2000 = Nat ((A, A, C), (Null, Null, Null)) | |
nat2001 = Nat ((A, A, C), (Null, Null, Eins)) | |
nat2015 = Nat ((A, A, C), (Null, Eins, Fuenf)) | |
nat2674 = Nat ((A, A, C), (Sechs, Sieben, Vier)) | |
nat12345 = Nat ((A, A, M), (Drei, Vier, Fuenf)) | |
nat88178 = Nat ((A, D, K), (Eins, Sieben, Acht)) | |
nat255367 = Nat ((A, J, V), (Drei, Sechs, Sieben)) | |
nat1234500 = Nat ((B, V, M), (Fuenf, Null, Null)) | |
nat1246845 = Nat ((B, V, Y), (Acht, Vier, Fuenf)) | |
nat1860867 = Nat ((C, T, O), (Acht, Sechs, Sieben)) | |
nat2960546 = Nat ((E, J, W), (Fuenf, Vier, Sechs)) | |
nat3301053 = Nat ((E, W, Z), (Null, Fuenf, Drei)) | |
nat4060225 = Nat ((G, A, E), (Zwei, Zwei, Fuenf)) | |
nat5921092 = Nat ((I, T, T), (Null, Neun, Zwei)) | |
nat6602106 = Nat ((J, T, Y), (Eins, Null, Sechs)) | |
nat8120450 = Nat ((M, A, I), (Vier, Fuenf, Null)) | |
nat9903159 = Nat ((O, Q, X), (Eins, Fuenf, Neun)) | |
nat11421503 = Nat ((Q, X, H), (Fuenf, Null, Drei)) | |
nat16505265 = Nat ((Y, K, V), (Zwei, Sechs, Fuenf)) | |
natMaxMinusOne = Nat ((Z, Z, Z), (Neun, Neun, Acht)) | |
natMax = Nat ((Z, Z, Z), (Neun, Neun, Neun)) | |
posRatUndefined = (nat0, nat0) | |
-- Main ------------------------------------------------------------------------ | |
main = runTestTT $ TestList [ | |
testEq | |
, testOrd | |
, testShow | |
, testNum | |
, testIsCanPR | |
, testMkCanPR | |
, testPlusPR | |
, testMinusPR | |
, testTimesPR | |
, testDivPR | |
, testEqPR | |
, testNeqPR | |
, testGrPR | |
, testLePR | |
, testGrEqPR | |
, testLeEqPR | |
, testPosRat | |
] | |
-- 1 --------------------------------------------------------------------------- | |
testEq = TestLabel "Eq" $ TestList | |
[ TestCase $ assertEqual | |
"nat12345 /= nat1234500" | |
True | |
(nat12345 /= nat1234500) | |
, TestCase $ assertEqual | |
"nat2000 /= nat200" | |
True | |
(nat2000 /= nat200) | |
, TestCase $ assertEqual | |
"nat1 /= nat0" | |
True | |
(nat1 /= nat0) | |
, TestCase $ assertEqual | |
"nat0 /= nat2000" | |
True | |
(nat0 /= nat2000) | |
, TestCase $ assertEqual | |
"nat123 /= nat3" | |
True | |
(nat123 /= nat3) | |
, TestCase $ assertEqual | |
"nat2015 /= nat2015" | |
False | |
(nat2015 /= nat2015) | |
, TestCase $ assertEqual | |
"natMax /= natMaxMinusOne" | |
True | |
(natMax /= natMaxMinusOne) | |
, TestCase $ assertEqual | |
"natMaxMinusOne /= natMaxMinusOne" | |
False | |
(natMaxMinusOne /= natMaxMinusOne) | |
] | |
testOrd = TestLabel "Ord" $ TestList | |
[ TestCase $ assertEqual | |
"nat1337 `compare` nat1337" | |
EQ | |
(nat1337 `compare` nat1337) | |
, TestCase $ assertEqual | |
"nat0 `compare` nat1" | |
LT | |
(nat0 `compare` nat1) | |
, TestCase $ assertEqual | |
"nat1 `compare` nat0" | |
GT | |
(nat1 `compare` nat0) | |
, TestCase $ assertEqual | |
"nat4060225 `compare` nat1" | |
GT | |
(nat4060225 `compare` nat1) | |
, TestCase $ assertEqual | |
"nat1 `compare` nat4060225" | |
LT | |
(nat1 `compare` nat4060225) | |
, TestCase $ assertEqual | |
"nat1500 `compare` nat123" | |
GT | |
(nat1500 `compare` nat123) | |
, TestCase $ assertEqual | |
"natMaxMinusOne `compare` natMax" | |
LT | |
(natMaxMinusOne `compare` natMax) | |
, TestCase $ assertEqual | |
"natMax `compare` natMax" | |
EQ | |
(natMax `compare` natMax) | |
, TestCase $ assertEqual | |
"natMax `compare` nat0" | |
GT | |
(natMax `compare` nat0) | |
] | |
testShow = TestLabel "Show" $ TestList | |
[ TestCase $ assertEqual | |
"show nat0" | |
"\"AAA 000\"" | |
(show nat0) | |
, TestCase $ assertEqual | |
"show nat20" | |
"\"AAA 020\"" | |
(show nat20) | |
, TestCase $ assertEqual | |
"show nat1700" | |
"\"AAB 700\"" | |
(show nat1700) | |
, TestCase $ assertEqual | |
"show natMax" | |
"\"ZZZ 999\"" | |
(show natMax) | |
, TestCase $ assertEqual | |
"show natMaxMinusOne" | |
"\"ZZZ 998\"" | |
(show natMaxMinusOne) | |
, TestCase $ assertEqual | |
"show nat1234500" | |
"\"BVM 500\"" | |
(show nat1234500) | |
, TestCase $ assertEqual | |
"show nat4060225" | |
"\"GAE 225\"" | |
(show nat4060225) | |
] | |
testNum = TestLabel "Num" $ TestList | |
[ TestCase $ assertEqual | |
"nat0 + nat1" | |
nat1 | |
(nat0 + nat1) | |
, TestCase $ assertEqual | |
"nat1 + nat0" | |
nat1 | |
(nat1 + nat0) | |
, TestCase $ assertEqual | |
"nat1337 + nat1337" | |
nat2674 | |
(nat1337 + nat1337) | |
, TestCase $ assertEqual | |
"nat1860867 + nat4060225" | |
nat5921092 | |
(nat1860867 + nat4060225) | |
, TestCase $ assertEqual | |
"natMax + nat2" | |
natMax | |
(natMax + nat2) | |
, TestCase $ assertEqual | |
"natMax - nat1" | |
natMaxMinusOne | |
(natMax - nat1) | |
, TestCase $ assertEqual | |
"nat1 - nat2" | |
nat0 | |
(nat1 - nat2) | |
, TestCase $ assertEqual | |
"nat16505265 - nat6602106" | |
nat9903159 | |
(nat16505265 - nat6602106) | |
, TestCase $ assertEqual | |
"nat0 * nat1" | |
nat0 | |
(nat0 * nat1) | |
, TestCase $ assertEqual | |
"nat1337 * nat0" | |
nat0 | |
(nat1337 * nat0) | |
, TestCase $ assertEqual | |
"nat0 * nat1337" | |
nat0 | |
(nat0 * nat1337) | |
, TestCase $ assertEqual | |
"nat1 * nat1337" | |
nat1337 | |
(nat1 * nat1337) | |
, TestCase $ assertEqual | |
"nat1760 * nat12345" | |
natMax | |
(nat1760 * nat12345) | |
, TestCase $ assertEqual | |
"nat1337 * nat12345" | |
nat16505265 | |
(nat1337 * nat12345) | |
, TestCase $ assertEqual | |
"natMaxMinusOne * nat1" | |
natMaxMinusOne | |
(natMaxMinusOne * nat1) | |
, TestCase $ assertEqual | |
"negate natMax" | |
nat0 | |
(negate natMax) | |
, TestCase $ assertEqual | |
"negate natMaxMinusOne" | |
nat0 | |
(negate natMaxMinusOne) | |
, TestCase $ assertEqual | |
"negate nat2015" | |
nat0 | |
(negate nat2015) | |
, TestCase $ assertEqual | |
"negate nat0" | |
nat0 | |
(negate nat0) | |
, TestCase $ assertEqual | |
"abs nat0" | |
nat0 | |
(abs nat0) | |
, TestCase $ assertEqual | |
"abs nat5921092" | |
nat5921092 | |
(abs nat5921092) | |
, TestCase $ assertEqual | |
"abs nat1999" | |
nat1999 | |
(abs nat1999) | |
, TestCase $ assertEqual | |
"abs natMax" | |
natMax | |
(abs natMax) | |
, TestCase $ assertEqual | |
"signum nat0" | |
0 | |
(signum nat0) | |
, TestCase $ assertEqual | |
"signum nat1" | |
1 | |
(signum nat1) | |
, TestCase $ assertEqual | |
"signum nat1860867" | |
1 | |
(signum nat1860867) | |
, TestCase $ assertEqual | |
"signum natMax" | |
1 | |
(signum natMax) | |
, TestCase $ assertEqual | |
"fromInteger 17575999" | |
natMax | |
(fromInteger 17575999) | |
, TestCase $ assertEqual | |
"fromInteger 17576000" | |
natMax | |
(fromInteger 17576000) | |
, TestCase $ assertEqual | |
"fromInteger 17575998" | |
natMaxMinusOne | |
(fromInteger 17575998) | |
, TestCase $ assertEqual | |
"fromInteger 4060225" | |
nat4060225 | |
(fromInteger 4060225) | |
, TestCase $ assertEqual | |
"fromInteger 0" | |
nat0 | |
(fromInteger 0) | |
, TestCase $ assertEqual | |
"fromInteger 1" | |
nat1 | |
(fromInteger 1) | |
, TestCase $ assertEqual | |
"fromInteger 1246845" | |
nat1246845 | |
(fromInteger 1246845) | |
, TestCase $ assertEqual | |
"fromInteger 16505265" | |
nat16505265 | |
(fromInteger 16505265) | |
, TestCase $ assertEqual | |
"fromInteger 12345678910" | |
natMax | |
(fromInteger 12345678910) | |
, TestCase $ assertEqual | |
"fromInteger (-1)" | |
nat0 | |
(fromInteger (-1)) | |
, TestCase $ assertEqual | |
"fromInteger (-16505265)" | |
nat0 | |
(fromInteger (-16505265)) | |
, TestCase $ assertEqual | |
"fromInteger (-0)" | |
nat0 | |
(fromInteger (-0)) | |
] | |
-- 2 --------------------------------------------------------------------------- | |
testIsCanPR = TestLabel "isCanPR" $ TestList | |
[ TestCase $ assertEqual | |
"isCanPR (nat2, nat1)" | |
True | |
(isCanPR (nat2, nat1)) | |
, TestCase $ assertEqual | |
"isCanPR (nat1, nat0)" | |
False | |
(isCanPR (nat1, nat0)) | |
, TestCase $ assertEqual | |
"isCanPR (nat16505265, nat0)" | |
False | |
(isCanPR (nat16505265, nat0)) | |
, TestCase $ assertEqual | |
"isCanPR (nat6, nat2)" | |
False | |
(isCanPR (nat6, nat2)) | |
, TestCase $ assertEqual | |
"isCanPR (nat2, nat6)" | |
False | |
(isCanPR (nat2, nat6)) | |
, TestCase $ assertEqual | |
"isCanPR (nat5921092, nat2)" | |
False | |
(isCanPR (nat5921092, nat2)) | |
, TestCase $ assertEqual | |
"isCanPR (nat5, nat16505265)" | |
False | |
(isCanPR (nat5, nat16505265)) | |
, TestCase $ assertEqual | |
"isCanPR (nat200, nat1234500)" | |
False | |
(isCanPR (nat200, nat1234500)) | |
, TestCase $ assertEqual | |
"isCanPR (nat2, nat12345)" | |
True | |
(isCanPR (nat2, nat12345)) | |
, TestCase $ assertEqual | |
"isCanPR (nat0, nat12345)" | |
False | |
(isCanPR (nat0, nat12345)) | |
, TestCase $ assertEqual | |
"isCanPR (nat0, nat1)" | |
True | |
(isCanPR (nat0, nat1)) | |
] | |
testMkCanPR = TestLabel "mkCanPR" $ TestList | |
[ TestCase $ assertEqual | |
"mkCanPR (nat2, nat1)" | |
(nat2, nat1) | |
(mkCanPR (nat2, nat1)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat1, nat0)" | |
posRatUndefined | |
(mkCanPR (nat1, nat0)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat16505265, nat0)" | |
posRatUndefined | |
(mkCanPR (nat16505265, nat0)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat6, nat2)" | |
(nat3, nat1) | |
(mkCanPR (nat6, nat2)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat2, nat6)" | |
(nat1, nat3) | |
(mkCanPR (nat2, nat6)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat5921092, nat2)" | |
(nat2960546, nat1) | |
(mkCanPR (nat5921092, nat2)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat5, nat16505265)" | |
(nat1, nat3301053) | |
(mkCanPR (nat5, nat16505265)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat200, nat1234500)" | |
(nat2, nat12345) | |
(mkCanPR (nat200, nat1234500)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat2, nat12345)" | |
(nat2, nat12345) | |
(mkCanPR (nat2, nat12345)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat0, nat12345)" | |
(nat0, nat1) | |
(mkCanPR (nat0, nat12345)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat0, nat1)" | |
(nat0, nat1) | |
(mkCanPR (nat0, nat1)) | |
, TestCase $ assertEqual | |
"mkCanPR (nat1800, nat12345)" | |
(nat120, nat823) | |
(mkCanPR (nat1800, nat12345)) | |
] | |
testPlusPR = TestLabel "plusPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `plusPR` (nat3, nat4)" | |
(nat11, nat4) | |
((nat2, nat1) `plusPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `plusPR` (nat3, nat4)" | |
posRatUndefined | |
((nat2, nat0) `plusPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `plusPR` (nat4060225, nat0)" | |
posRatUndefined | |
((nat2960546, nat5921092) `plusPR` (nat4060225, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `plusPR` (nat4060225, nat3301053)" | |
(nat11421503, nat6602106) | |
((nat2960546, nat5921092) `plusPR` (nat4060225, nat3301053)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMaxMinusOne) `plusPR` (natMax, natMax)" | |
(nat2, nat1) | |
((natMaxMinusOne, natMaxMinusOne) `plusPR` (natMax, natMax)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMax) `plusPR` (nat0, natMax)" | |
(natMaxMinusOne, natMax) | |
((natMaxMinusOne, natMax) `plusPR` (nat0, natMax)) | |
] | |
testMinusPR = TestLabel "minusPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `minusPR` (nat3, nat4)" | |
(nat5, nat4) | |
((nat2, nat1) `minusPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `minusPR` (nat3, nat4)" | |
posRatUndefined | |
((nat2, nat0) `minusPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `minusPR` (nat4060225, nat0)" | |
posRatUndefined | |
((nat2960546, nat5921092) `minusPR` (nat4060225, nat0)) | |
, TestCase $ assertEqual | |
"(nat1, nat2) `minusPR` (nat2, nat2)" | |
(nat0, nat1) | |
((nat1, nat2) `minusPR` (nat2, nat2)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `minusPR` (nat4060225, nat3301053)" | |
(nat0, nat1) | |
((nat2960546, nat5921092) `minusPR` (nat4060225, nat3301053)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMaxMinusOne) `minusPR` (natMax, natMax)" | |
(nat0, nat1) | |
((natMaxMinusOne, natMaxMinusOne) `minusPR` (natMax, natMax)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMax) `minusPR` (natMax, natMaxMinusOne)" | |
(nat0, nat1) | |
((natMaxMinusOne, natMax) `minusPR` (natMax, natMaxMinusOne)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMax) `minusPR` (nat0, natMax)" | |
(natMaxMinusOne, natMax) | |
((natMaxMinusOne, natMax) `minusPR` (nat0, natMax)) | |
, TestCase $ assertEqual | |
"(natMax, nat1337) `minusPR` (natMaxMinusOne, nat1337)" | |
(nat1, nat1337) | |
((natMax, nat1337) `minusPR` (natMaxMinusOne, nat1337)) | |
] | |
testTimesPR = TestLabel "timesPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `timesPR` (nat3, nat4)" | |
(nat3, nat2) | |
((nat2, nat1) `timesPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `timesPR` (nat3, nat4)" | |
posRatUndefined | |
((nat2, nat0) `timesPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `timesPR` (nat4060225, nat0)" | |
posRatUndefined | |
((nat2960546, nat5921092) `timesPR` (nat4060225, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `timesPR` (nat4060225, nat3301053)" | |
(nat4060225, nat6602106) | |
((nat2960546, nat5921092) `timesPR` (nat4060225, nat3301053)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMaxMinusOne) `timesPR` (natMax, natMax)" | |
(nat1, nat1) | |
((natMaxMinusOne, natMaxMinusOne) `timesPR` (natMax, natMax)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMax) `timesPR` (natMax, natMaxMinusOne)" | |
(nat1, nat1) | |
((natMaxMinusOne, natMax) `timesPR` (natMax, natMaxMinusOne)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMax) `timesPR` (nat0, natMax)" | |
(nat0, nat1) | |
((natMaxMinusOne, natMax) `timesPR` (nat0, natMax)) | |
, TestCase $ assertEqual | |
"(natMax, nat1337) `timesPR` (natMaxMinusOne, nat1337)" | |
(natMax, nat1) | |
((natMax, nat1337) `timesPR` (natMaxMinusOne, nat1337)) | |
] | |
testDivPR = TestLabel "divPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `divPR` (nat3, nat4)" | |
(nat8, nat3) | |
((nat2, nat1) `divPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `divPR` (nat3, nat4)" | |
posRatUndefined | |
((nat2, nat0) `divPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `divPR` (nat4060225, nat0)" | |
posRatUndefined | |
((nat2960546, nat5921092) `divPR` (nat4060225, nat0)) | |
, TestCase $ assertEqual | |
"(nat1, nat2) `divPR` (nat0, nat3)" | |
posRatUndefined | |
((nat1, nat2) `divPR` (nat0, nat3)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat5921092) `divPR` (nat4060225, nat3301053)" | |
(nat3301053, nat8120450) | |
((nat2960546, nat5921092) `divPR` (nat4060225, nat3301053)) | |
, TestCase $ assertEqual | |
"(natMaxMinusOne, natMaxMinusOne) `divPR` (natMax, natMax)" | |
(nat1, nat1) | |
((natMaxMinusOne, natMaxMinusOne) `divPR` (natMax, natMax)) | |
, TestCase $ assertEqual | |
"(natMax, nat1337) `divPR` (natMaxMinusOne, nat1337)" | |
(natMax, natMaxMinusOne) | |
((natMax, nat1337) `divPR` (natMaxMinusOne, nat1337)) | |
] | |
testEqPR = TestLabel "eqPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `eqPR` (nat3, nat4)" | |
False | |
((nat2, nat1) `eqPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `eqPR` (nat2, nat1)" | |
False | |
((nat2, nat0) `eqPR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `eqPR` (nat1, nat0)" | |
False | |
((nat1, nat1) `eqPR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `eqPR` (nat0, nat0)" | |
False | |
((nat0, nat0) `eqPR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `eqPR` (nat2960546, nat3301053)" | |
True | |
((nat2960546, nat3301053) `eqPR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `eqPR` (nat8, nat4)" | |
True | |
((nat2, nat1) `eqPR` (nat8, nat4)) | |
] | |
testNeqPR = TestLabel "neqPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `neqPR` (nat3, nat4)" | |
True | |
((nat2, nat1) `neqPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `neqPR` (nat2, nat1)" | |
False | |
((nat2, nat0) `neqPR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `neqPR` (nat1, nat0)" | |
False | |
((nat1, nat1) `neqPR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `neqPR` (nat0, nat0)" | |
False | |
((nat0, nat0) `neqPR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `neqPR` (nat2960546, nat3301053)" | |
False | |
((nat2960546, nat3301053) `neqPR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `neqPR` (nat8, nat4)" | |
False | |
((nat2, nat1) `neqPR` (nat8, nat4)) | |
] | |
testGrPR = TestLabel "grPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `grPR` (nat3, nat4)" | |
True | |
((nat2, nat1) `grPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `grPR` (nat2, nat1)" | |
False | |
((nat2, nat0) `grPR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `grPR` (nat1, nat0)" | |
False | |
((nat1, nat1) `grPR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `grPR` (nat0, nat0)" | |
False | |
((nat0, nat0) `grPR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `grPR` (nat2960546, nat3301053)" | |
False | |
((nat2960546, nat3301053) `grPR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `grPR` (nat8, nat4)" | |
False | |
((nat2, nat1) `grPR` (nat8, nat4)) | |
, TestCase $ assertEqual | |
"(natMax, nat12345) `grPR` (natMaxMinusOne, nat12345)" | |
True | |
((natMax, nat12345) `grPR` (natMaxMinusOne, nat12345)) | |
, TestCase $ assertEqual | |
"(nat1999, nat30) `grPR` (nat2000, nat30)" | |
False | |
((nat1999, nat30) `grPR` (nat2000, nat30)) | |
] | |
testLePR = TestLabel "lePR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `lePR` (nat3, nat4)" | |
False | |
((nat2, nat1) `lePR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `lePR` (nat2, nat1)" | |
False | |
((nat2, nat0) `lePR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `lePR` (nat1, nat0)" | |
False | |
((nat1, nat1) `lePR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `lePR` (nat0, nat0)" | |
False | |
((nat0, nat0) `lePR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `lePR` (nat2960546, nat3301053)" | |
False | |
((nat2960546, nat3301053) `lePR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `lePR` (nat8, nat4)" | |
False | |
((nat2, nat1) `lePR` (nat8, nat4)) | |
, TestCase $ assertEqual | |
"(natMax, nat12345) `lePR` (natMaxMinusOne, nat12345)" | |
False | |
((natMax, nat12345) `lePR` (natMaxMinusOne, nat12345)) | |
, TestCase $ assertEqual | |
"(nat1999, nat30) `lePR` (nat2000, nat30)" | |
True | |
((nat1999, nat30) `lePR` (nat2000, nat30)) | |
, TestCase $ assertEqual | |
"(nat2000, nat2001) `lePR` (nat2000, nat2000)" | |
True | |
((nat2000, nat2001) `lePR` (nat2000, nat2000)) | |
] | |
testGrEqPR = TestLabel "grEqPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `grEqPR` (nat3, nat4)" | |
True | |
((nat2, nat1) `grEqPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `grEqPR` (nat2, nat1)" | |
False | |
((nat2, nat0) `grEqPR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `grEqPR` (nat1, nat0)" | |
False | |
((nat1, nat1) `grEqPR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `grEqPR` (nat0, nat0)" | |
False | |
((nat0, nat0) `grEqPR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `grEqPR` (nat2960546, nat3301053)" | |
True | |
((nat2960546, nat3301053) `grEqPR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `grEqPR` (nat8, nat4)" | |
True | |
((nat2, nat1) `grEqPR` (nat8, nat4)) | |
, TestCase $ assertEqual | |
"(natMax, nat12345) `grEqPR` (natMaxMinusOne, nat12345)" | |
True | |
((natMax, nat12345) `grEqPR` (natMaxMinusOne, nat12345)) | |
, TestCase $ assertEqual | |
"(nat1999, nat30) `grEqPR` (nat2000, nat30)" | |
False | |
((nat1999, nat30) `grEqPR` (nat2000, nat30)) | |
] | |
testLeEqPR = TestLabel "leEqPR" $ TestList | |
[ TestCase $ assertEqual | |
"(nat2, nat1) `leEqPR` (nat3, nat4)" | |
False | |
((nat2, nat1) `leEqPR` (nat3, nat4)) | |
, TestCase $ assertEqual | |
"(nat2, nat0) `leEqPR` (nat2, nat1)" | |
False | |
((nat2, nat0) `leEqPR` (nat2, nat1)) | |
, TestCase $ assertEqual | |
"(nat1, nat1) `leEqPR` (nat1, nat0)" | |
False | |
((nat1, nat1) `leEqPR` (nat1, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat0) `leEqPR` (nat0, nat0)" | |
False | |
((nat0, nat0) `leEqPR` (nat0, nat0)) | |
, TestCase $ assertEqual | |
"(nat0, nat1) `leEqPR` (nat0, nat1)" | |
True | |
((nat0, nat1) `leEqPR` (nat0, nat1)) | |
, TestCase $ assertEqual | |
"(nat2960546, nat3301053) `leEqPR` (nat2960546, nat3301053)" | |
True | |
((nat2960546, nat3301053) `leEqPR` (nat2960546, nat3301053)) | |
, TestCase $ assertEqual | |
"(nat2, nat1) `leEqPR` (nat8, nat4)" | |
True | |
((nat2, nat1) `leEqPR` (nat8, nat4)) | |
, TestCase $ assertEqual | |
"(natMax, nat12345) `leEqPR` (natMaxMinusOne, nat12345)" | |
False | |
((natMax, nat12345) `leEqPR` (natMaxMinusOne, nat12345)) | |
, TestCase $ assertEqual | |
"(nat1999, nat30) `leEqPR` (nat2000, nat30)" | |
True | |
((nat1999, nat30) `leEqPR` (nat2000, nat30)) | |
] | |
testPosRat = TestLabel "PosRat-tests from exercise sheet" $ TestList | |
[ TestCase $ assertEqual | |
("isCanPR (Nat ((A, A, A), (Neun, Neun, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Sechs)))") | |
False | |
(isCanPR (Nat ((A, A, A), (Neun, Neun, Acht)), | |
Nat ((A, A, A), (Null, Null, Sechs)))) | |
, TestCase $ assertEqual | |
("mkCanPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Sechs))") | |
(Nat ((A, A, A), (Null, Null, Vier)), | |
Nat ((A, A, A), (Null, Null, Drei))) | |
(mkCanPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Sechs)))) | |
, TestCase $ assertEqual | |
("plusPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Vier))) " ++ | |
"(Nat ((A, A, A), (Null, Vier, Zwei)), " ++ | |
"Nat ((A, A, A), (Null, Null, Eins)))") | |
(Nat ((A, A, A), (Null, Vier, Vier)), | |
Nat ((A, A, A), (Null, Null, Eins))) | |
(plusPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Vier))) | |
(Nat ((A, A, A), (Null, Vier, Zwei)), | |
Nat ((A, A, A), (Null, Null, Eins)))) | |
, TestCase $ assertEqual | |
("minusPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Vier))) " ++ | |
"(Nat ((A, A, A), (Null, Vier, Zwei)), " ++ | |
"Nat ((A, A, A), (Null, Null, Eins)))") | |
(Nat ((A, A, A), (Null, Null, Null)), | |
Nat ((A, A, A), (Null, Null, Eins))) | |
(minusPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Vier))) | |
(Nat ((A, A, A), (Null, Vier, Zwei)), | |
Nat ((A, A, A), (Null, Null, Eins)))) | |
, TestCase $ assertEqual | |
("timesPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Null))) " ++ | |
"(Nat ((A, A, A), (Null, Vier, Zwei)), " ++ | |
"Nat ((A, A, A), (Null, Null, Eins)))") | |
(Nat ((A, A, A), (Null, Null, Null)), | |
Nat ((A, A, A), (Null, Null, Null))) | |
(timesPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Null))) | |
(Nat ((A, A, A), (Null, Vier, Zwei)), | |
Nat ((A, A, A), (Null, Null, Eins)))) | |
, TestCase $ assertEqual | |
("eqPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Vier))) " ++ | |
"(Nat ((A, A, A), (Null, Null, Vier)), " ++ | |
"Nat ((A, A, A), (Null, Null, Zwei)))") | |
True | |
(eqPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Vier))) | |
(Nat ((A, A, A), (Null, Null, Vier)), | |
Nat ((A, A, A), (Null, Null, Zwei)))) | |
, TestCase $ assertEqual | |
("leEqPR (Nat ((A, A, A), (Null, Null, Acht)), " ++ | |
"Nat ((A, A, A), (Null, Null, Vier))) " ++ | |
"(Nat ((A, A, A), (Null, Vier, Zwei)), " ++ | |
"Nat ((A, A, A), (Null, Null, Eins)))") | |
True | |
(leEqPR (Nat ((A, A, A), (Null, Null, Acht)), | |
Nat ((A, A, A), (Null, Null, Vier))) | |
(Nat ((A, A, A), (Null, Vier, Zwei)), | |
Nat ((A, A, A), (Null, Null, Eins)))) | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment