From 6f604b19d3f5966e5c1d7c4fdf3703bd6ff0861c Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Thu, 16 Apr 2015 21:22:20 +0200 Subject: update to fp2 yay, public and licence --- fp1/week2/mart/VectorOverloadingTest.icl | 62 ++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 fp1/week2/mart/VectorOverloadingTest.icl (limited to 'fp1/week2/mart/VectorOverloadingTest.icl') diff --git a/fp1/week2/mart/VectorOverloadingTest.icl b/fp1/week2/mart/VectorOverloadingTest.icl new file mode 100644 index 0000000..e5571bb --- /dev/null +++ b/fp1/week2/mart/VectorOverloadingTest.icl @@ -0,0 +1,62 @@ +module VectorOverloadingTest + +/* Test module VectorOverloading + Voor werken met Gast: + (*) gebruik Environment 'Gast' + (*) zet Project Options op 'Basic Values Only' +*/ + +import VectorOverloading +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 + ) + +:: 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 Vector2 +derive ggen Vector2 +derive bimap [] -- cgit v1.2.3