summaryrefslogtreecommitdiff
path: root/fp1/week2/mart/TupleOverloadingTest.icl
diff options
context:
space:
mode:
authorMart Lubbers2015-04-16 21:22:20 +0200
committerMart Lubbers2015-04-16 21:22:20 +0200
commit6f604b19d3f5966e5c1d7c4fdf3703bd6ff0861c (patch)
tree96d580507249f7f58368476d9113007d4afcd748 /fp1/week2/mart/TupleOverloadingTest.icl
parentAdded student numbers (diff)
update to fp2 yay, public and licence
Diffstat (limited to 'fp1/week2/mart/TupleOverloadingTest.icl')
-rw-r--r--fp1/week2/mart/TupleOverloadingTest.icl64
1 files changed, 64 insertions, 0 deletions
diff --git a/fp1/week2/mart/TupleOverloadingTest.icl b/fp1/week2/mart/TupleOverloadingTest.icl
new file mode 100644
index 0000000..91417f7
--- /dev/null
+++ b/fp1/week2/mart/TupleOverloadingTest.icl
@@ -0,0 +1,64 @@
+module TupleOverloadingTest
+
+/* Test module VectorOverloading
+ Voor werken met Gast:
+ (*) gebruik Environment 'Gast'
+ (*) zet Project Options op 'Basic Values Only'
+*/
+
+import TupleOverloading
+import StdEnv
+import gast
+
+Start
+ = testn 1000
+ (\v ->
+ zero_is_neutral_for_addition v /\
+ zero_is_neutral_for_subtraction v /\
+ one_is_neutral_for_multiplication v /\
+ one_is_neutral_for_division v /\
+ negation_is_idempotent v /\
+ add_then_subtract_yields_identity v /\
+ subtract_then_add_yields_identity v /\
+ True
+ )
+
+:: Vector2 a :== (a,a)
+:: BaseType
+ :== Int
+// :== Real
+
+zero_is_neutral_for_addition :: (Vector2 BaseType) -> Property
+zero_is_neutral_for_addition a = name "zero_is_neutral_for_addition"
+ (zero + a == a && a == a + zero)
+
+zero_is_neutral_for_subtraction :: (Vector2 BaseType) -> Property
+zero_is_neutral_for_subtraction a = name "zero_is_neutral_for_subtraction"
+ (a - zero == a && a == ~ (zero - a))
+
+one_is_neutral_for_multiplication :: (Vector2 BaseType) -> Property
+one_is_neutral_for_multiplication a = name "one_is_neutral_for_multiplication"
+ (one * a == a && a == a * one)
+
+zero_is_zero_for_multiplication :: (Vector2 BaseType) -> Property
+zero_is_zero_for_multiplication a = name "zero_is_zero_for_multiplication"
+ (zero * a == zero && zero == a * zero)
+
+one_is_neutral_for_division :: (Vector2 BaseType) -> Property
+one_is_neutral_for_division a = name "one_is_neutral_for_division"
+ (a / one == a)
+
+negation_is_idempotent :: (Vector2 BaseType) -> Property
+negation_is_idempotent a = name "negation_is_idempotent"
+ (~ (~ a) == a)
+
+
+add_then_subtract_yields_identity :: (Vector2 BaseType) -> Property
+add_then_subtract_yields_identity a = name "add then subtract" ((a + a) - a == a)
+
+subtract_then_add_yields_identity :: (Vector2 BaseType) -> Property
+subtract_then_add_yields_identity a = name "subtract then add" ((zero - a - a) + a + a == zero)
+
+//derive genShow (,)
+//derive ggen (,)
+derive bimap []