From 6c76b9662cc2b0176d152a135435c39c088ef347 Mon Sep 17 00:00:00 2001 From: SimaDovakin Date: Sat, 8 Feb 2025 17:28:58 +0200 Subject: [PATCH] Test upgrades for the following exercises: - clock - Collatz conjecture - crypto square - darts - diamond - difference of squares - D'n'D character --- .../practice/clock/.meta/testAnnotation.json | 106 ++-- exercises/practice/clock/clock.test.u | 574 +++++++++++++----- .../.meta/testAnnotation.json | 12 +- .../collatz-conjecture/collatz.test.u | 47 +- .../crypto-square/.meta/testAnnotation.json | 16 +- .../practice/crypto-square/crypto.test.u | 65 +- .../practice/darts/.meta/testAnnotation.json | 28 +- exercises/practice/darts/darts.test.u | 119 +++- .../diamond/.meta/testAnnotation.json | 12 +- exercises/practice/diamond/diamond.test.u | 47 +- .../.meta/testAnnotation.json | 20 +- .../differenceOfSquares.test.u | 85 ++- .../dnd-character/.meta/testAnnotation.json | 36 +- .../dnd-character/dndCharacter.test.u | 286 +++++---- 14 files changed, 982 insertions(+), 471 deletions(-) diff --git a/exercises/practice/clock/.meta/testAnnotation.json b/exercises/practice/clock/.meta/testAnnotation.json index e9f1420..2f79274 100644 --- a/exercises/practice/clock/.meta/testAnnotation.json +++ b/exercises/practice/clock/.meta/testAnnotation.json @@ -1,210 +1,210 @@ [ { "name": "Create a new clock with an initial time, on the hour", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, on the hour\" <| Test.expect (create +8 +0 === \"08:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, on the hour\" do\n expected = \"08:00\"\n actual = create +8 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, past the hour", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, past the hour\" <| Test.expect (create +11 +9 === \"11:09\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, past the hour\" do\n expected = \"11:09\"\n actual = create +11 +9\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, midnight is zero hours", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, midnight is zero hours\" <| Test.expect (create +24 +0 === \"00:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, midnight is zero hours\" do\n expected = \"00:00\"\n actual = create +24 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, hour rolls over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, hour rolls over\" <| Test.expect (create +25 +0 === \"01:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, hour rolls over\" do\n expected = \"01:00\"\n actual = create +25 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, hour rolls over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, hour rolls over continuously\" <| Test.expect (create +100 +0 === \"04:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, hour rolls over continuously\" do\n expected = \"04:00\"\n actual = create +100 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, sixty minutes is next hour", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, sixty minutes is next hour\" <| Test.expect (create +1 +60 === \"02:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, sixty minutes is next hour\" do\n expected = \"02:00\"\n actual = create +1 +60\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, minutes roll over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, minutes roll over\" <| Test.expect (create +0 +160 === \"02:40\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, minutes roll over\" do\n expected = \"02:40\"\n actual = create +0 +160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, minutes roll over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, minutes roll over continuously\" <| Test.expect (create +0 +1723 === \"04:43\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, minutes roll over continuously\" do\n expected = \"04:43\"\n actual = create +0 +1723\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, hour and minutes roll over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, hour and minutes roll over\" <| Test.expect (create +25 +160 === \"03:40\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, hour and minutes roll over\" do\n expected = \"03:40\"\n actual = create +25 +160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, hour and minutes roll over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, hour and minutes roll over continuously\" <| Test.expect (create +201 +3001 === \"11:01\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, hour and minutes roll over continuously\" do\n expected = \"11:01\"\n actual = create +201 +3001\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, hour and minutes roll over to exactly midnight", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, hour and minutes roll over to exactly midnight\" <| Test.expect (create +72 +8640 === \"00:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, hour and minutes roll over to exactly midnight\" do\n expected = \"00:00\"\n actual = create +72 +8640\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative hour", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative hour\" <| Test.expect (create -1 +15 === \"23:15\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative hour\" do\n expected = \"23:15\"\n actual = create -1 +15\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative hour rolls over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative hour rolls over\" <| Test.expect (create -25 +0 === \"23:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative hour rolls over\" do\n expected = \"23:00\"\n actual = create -25 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative hour rolls over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative hour rolls over continuously\" <| Test.expect (create -91 +0 === \"05:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative hour rolls over continuously\" do\n expected = \"05:00\"\n actual = create -91 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative minutes", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative minutes\" <| Test.expect (create +1 -40 === \"00:20\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative minutes\" do\n expected = \"00:20\"\n actual = create +1 -40\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative minutes roll over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative minutes roll over\" <| Test.expect (create +1 -160 === \"22:20\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative minutes roll over\" do\n expected = \"22:20\"\n actual = create +1 -160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative minutes roll over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative minutes roll over continuously\" <| Test.expect (create +1 -4820 === \"16:40\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative minutes roll over continuously\" do\n expected = \"16:40\"\n actual = create +1 -4820\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative sixty minutes is previous hour", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative sixty minutes is previous hour\" <| Test.expect (create +2 -60 === \"01:00\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative sixty minutes is previous hour\" do\n expected = \"01:00\"\n actual = create +2 -60\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative hour and minutes both roll over", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative hour and minutes both roll over\" <| Test.expect (create -25 -160 === \"20:20\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative hour and minutes both roll over\" do\n expected = \"20:20\"\n actual = create -25 -160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Create a new clock with an initial time, negative hour and minutes both roll over continuously", - "test_code": "let\n Test.label.deprecated \"Create a new clock with an initial time, negative hour and minutes both roll over continuously\" <| Test.expect (create -121 -5810 === \"22:10\")" + "test_code": "verify do\n labeled \"Create a new clock with an initial time, negative hour and minutes both roll over continuously\" do\n expected = \"22:10\"\n actual = create -121 -5810\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add minutes", - "test_code": "let\n Test.label.deprecated \"Add minutes, add minutes\" <| Test.expect (add +10 +0 +3 === \"10:03\")" + "test_code": "verify do\n labeled \"Add minutes, add minutes\" do\n expected = \"10:03\"\n actual = add +10 +0 +3\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add no minutes", - "test_code": "let\n Test.label.deprecated \"Add minutes, add no minutes\" <| Test.expect (add +6 +41 +0 === \"06:41\")" + "test_code": "verify do\n labeled \"Add minutes, add no minutes\" do\n expected = \"06:41\"\n actual = add +6 +41 +0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add to next hour", - "test_code": "let\n Test.label.deprecated \"Add minutes, add to next hour\" <| Test.expect (add +0 +45 +40 === \"01:25\")" + "test_code": "verify do\n labeled \"Add minutes, add to next hour\" do\n expected = \"01:25\"\n actual = add +0 +45 +40\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add more than one hour", - "test_code": "let\n Test.label.deprecated \"Add minutes, add more than one hour\" <| Test.expect (add +10 +0 +61 === \"11:01\")" + "test_code": "verify do\n labeled \"Add minutes, add more than one hour\" do\n expected = \"11:01\"\n actual = add +10 +0 +61\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add more than two hours with carry", - "test_code": "let\n Test.label.deprecated \"Add minutes, add more than two hours with carry\" <| Test.expect (add +0 +45 +160 === \"03:25\")" + "test_code": "verify do\n labeled \"Add minutes, add more than two hours with carry\" do\n expected = \"03:25\"\n actual = add +0 +45 +160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add across midnight", - "test_code": "let\n Test.label.deprecated \"Add minutes, add across midnight\" <| Test.expect (add +23 +59 +2 === \"00:01\")" + "test_code": "verify do\n labeled \"Add minutes, add across midnight\" do\n expected = \"00:01\"\n actual = add +23 +59 +2\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add more than one day (1500 min = 25 hrs)", - "test_code": "let\n Test.label.deprecated \"Add minutes, add more than one day (1500 min = 25 hrs)\" <| Test.expect (add +5 +32 +1500 === \"06:32\")" + "test_code": "verify do\n labeled \"Add minutes, add more than one day (1500 min = 25 hrs)\" do\n expected = \"06:32\"\n actual = add +5 +32 +1500\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Add minutes, add more than two days", - "test_code": "let\n Test.label.deprecated \"Add minutes, add more than two days\" <| Test.expect (add +1 +1 +3500 === \"11:21\")" + "test_code": "verify do\n labeled \"Add minutes, add more than two days\" do\n expected = \"11:21\"\n actual = add +1 +1 +3500\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract minutes", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract minutes\" <| Test.expect (subtract +10 +3 +3 === \"10:00\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract minutes\" do\n expected = \"10:00\"\n actual = subtract +10 +3 +3\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract to previous hour", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract to previous hour\" <| Test.expect (subtract +10 +3 +30 === \"09:33\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract to previous hour\" do\n expected = \"09:33\"\n actual = subtract +10 +3 +30\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract more than an hour", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract more than an hour\" <| Test.expect (subtract +10 +3 +70 === \"08:53\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract more than an hour\" do\n expected = \"08:53\"\n actual = subtract +10 +3 +70\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract across midnight", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract across midnight\" <| Test.expect (subtract +0 +3 +4 === \"23:59\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract across midnight\" do\n expected = \"23:59\"\n actual = subtract +0 +3 +4\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract more than two hours", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract more than two hours\" <| Test.expect (subtract +0 +0 +160 === \"21:20\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract more than two hours\" do\n expected = \"21:20\"\n actual = subtract +0 +0 +160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract more than two hours with borrow", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract more than two hours with borrow\" <| Test.expect (subtract +6 +15 +160 === \"03:35\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract more than two hours with borrow\" do\n expected = \"03:35\"\n actual = subtract +6 +15 +160\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract more than one day (1500 min = 25 hrs)", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract more than one day (1500 min = 25 hrs)\" <| Test.expect (subtract +5 +32 +1500 === \"04:32\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract more than one day (1500 min = 25 hrs)\" do\n expected = \"04:32\"\n actual = subtract +5 +32 +1500\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Subtract minutes, subtract more than two days", - "test_code": "let\n Test.label.deprecated \"Subtract minutes, subtract more than two days\" <| Test.expect (subtract +2 +20 +3000 === \"00:20\")" + "test_code": "verify do\n labeled \"Subtract minutes, subtract more than two days\" do\n expected = \"00:20\"\n actual = subtract +2 +20 +3000\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with same time", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with same time\" <| Test.expect (equal (+15, +37) (+15, +37) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with same time\" do\n expected = true\n actual = equal (+15, +37) (+15, +37)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks a minute apart", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks a minute apart\" <| Test.expect (equal (+15, +36) (+15, +37) === false)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks a minute apart\" do\n expected = false\n actual = equal (+15, +36) (+15, +37)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks an hour apart", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks an hour apart\" <| Test.expect (equal (+14, +37) (+15, +37) === false)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks an hour apart\" do\n expected = false\n actual = equal (+14, +37) (+15, +37)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with hour overflow", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with hour overflow\" <| Test.expect (equal (+10, +37) (+34, +37) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with hour overflow\" do\n expected = true\n actual = equal (+10, +37) (+34, +37)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with hour overflow by several days", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with hour overflow by several days\" <| Test.expect (equal (+3, +11) (+99, +11) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with hour overflow by several days\" do\n expected = true\n actual = equal (+3, +11) (+99, +11)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative hour", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative hour\" <| Test.expect (equal (+22, +40) (-2, +40) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative hour\" do\n expected = true\n actual = equal (+22, +40) (-2, +40)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative hour that wraps", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative hour that wraps\" <| Test.expect (equal (+17, +3) (-31, +3) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative hour that wraps\" do\n expected = true\n actual = equal (+17, +3) (-31, +3)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative hour that wraps multiple times", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative hour that wraps multiple times\" <| Test.expect (equal (+13, +49) (-83, +49) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative hour that wraps multiple times\" do\n expected = true\n actual = equal (+13, +49) (-83, +49)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with minute overflow", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with minute overflow\" <| Test.expect (equal (+0, +1) (+0, +1441) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with minute overflow\" do\n expected = true\n actual = equal (+0, +1) (+0, +1441)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with minute overflow by several days", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with minute overflow by several days\" <| Test.expect (equal (+2, +2) (+2, +4322) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with minute overflow by several days\" do\n expected = true\n actual = equal (+2, +2) (+2, +4322)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative minute", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative minute\" <| Test.expect (equal (+2, +40) (+3, -20) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative minute\" do\n expected = true\n actual = equal (+2, +40) (+3, -20)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative minute that wraps", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative minute that wraps\" <| Test.expect (equal (+4, +10) (+5, -1490) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative minute that wraps\" do\n expected = true\n actual = equal (+4, +10) (+5, -1490)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative minute that wraps multiple times", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative minute that wraps multiple times\" <| Test.expect (equal (+6, +15) (+6, -4305) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative minute that wraps multiple times\" do\n expected = true\n actual = equal (+6, +15) (+6, -4305)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative hours and minutes", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative hours and minutes\" <| Test.expect (equal (+7, +32) (-12, -268) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative hours and minutes\" do\n expected = true\n actual = equal (+7, +32) (-12, -268)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, clocks with negative hours and minutes that wrap", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, clocks with negative hours and minutes that wrap\" <| Test.expect (equal (+18, +7) (-54, -11513) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, clocks with negative hours and minutes that wrap\" do\n expected = true\n actual = equal (+18, +7) (-54, -11513)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Compare two clocks for equality, full clock and zeroed clock", - "test_code": "let\n Test.label.deprecated \"Compare two clocks for equality, full clock and zeroed clock\" <| Test.expect (equal (+24, +0) (+0, +0) === true)" + "test_code": "verify do\n labeled \"Compare two clocks for equality, full clock and zeroed clock\" do\n expected = true\n actual = equal (+24, +0) (+0, +0)\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/clock/clock.test.u b/exercises/practice/clock/clock.test.u index 7ed5e1b..1697215 100644 --- a/exercises/practice/clock/clock.test.u +++ b/exercises/practice/clock/clock.test.u @@ -1,160 +1,420 @@ -clock.test.ex1 = let - Test.label.deprecated "Create a new clock with an initial time, on the hour" <| Test.expect (create +8 +0 === "08:00") - -clock.test.ex2 = let - Test.label.deprecated "Create a new clock with an initial time, past the hour" <| Test.expect (create +11 +9 === "11:09") - -clock.test.ex3 = let - Test.label.deprecated "Create a new clock with an initial time, midnight is zero hours" <| Test.expect (create +24 +0 === "00:00") - -clock.test.ex4 = let - Test.label.deprecated "Create a new clock with an initial time, hour rolls over" <| Test.expect (create +25 +0 === "01:00") - -clock.test.ex5 = let - Test.label.deprecated "Create a new clock with an initial time, hour rolls over continuously" <| Test.expect (create +100 +0 === "04:00") - -clock.test.ex6 = let - Test.label.deprecated "Create a new clock with an initial time, sixty minutes is next hour" <| Test.expect (create +1 +60 === "02:00") - -clock.test.ex7 = let - Test.label.deprecated "Create a new clock with an initial time, minutes roll over" <| Test.expect (create +0 +160 === "02:40") - -clock.test.ex8 = let - Test.label.deprecated "Create a new clock with an initial time, minutes roll over continuously" <| Test.expect (create +0 +1723 === "04:43") - -clock.test.ex9 = let - Test.label.deprecated "Create a new clock with an initial time, hour and minutes roll over" <| Test.expect (create +25 +160 === "03:40") - -clock.test.ex10 = let - Test.label.deprecated "Create a new clock with an initial time, hour and minutes roll over continuously" <| Test.expect (create +201 +3001 === "11:01") - -clock.test.ex11 = let - Test.label.deprecated "Create a new clock with an initial time, hour and minutes roll over to exactly midnight" <| Test.expect (create +72 +8640 === "00:00") - -clock.test.ex12 = let - Test.label.deprecated "Create a new clock with an initial time, negative hour" <| Test.expect (create -1 +15 === "23:15") - -clock.test.ex13 = let - Test.label.deprecated "Create a new clock with an initial time, negative hour rolls over" <| Test.expect (create -25 +0 === "23:00") - -clock.test.ex14 = let - Test.label.deprecated "Create a new clock with an initial time, negative hour rolls over continuously" <| Test.expect (create -91 +0 === "05:00") - -clock.test.ex15 = let - Test.label.deprecated "Create a new clock with an initial time, negative minutes" <| Test.expect (create +1 -40 === "00:20") - -clock.test.ex16 = let - Test.label.deprecated "Create a new clock with an initial time, negative minutes roll over" <| Test.expect (create +1 -160 === "22:20") - -clock.test.ex17 = let - Test.label.deprecated "Create a new clock with an initial time, negative minutes roll over continuously" <| Test.expect (create +1 -4820 === "16:40") - -clock.test.ex18 = let - Test.label.deprecated "Create a new clock with an initial time, negative sixty minutes is previous hour" <| Test.expect (create +2 -60 === "01:00") - -clock.test.ex19 = let - Test.label.deprecated "Create a new clock with an initial time, negative hour and minutes both roll over" <| Test.expect (create -25 -160 === "20:20") - -clock.test.ex20 = let - Test.label.deprecated "Create a new clock with an initial time, negative hour and minutes both roll over continuously" <| Test.expect (create -121 -5810 === "22:10") - -clock.test.ex21 = let - Test.label.deprecated "Add minutes, add minutes" <| Test.expect (add +10 +0 +3 === "10:03") - -clock.test.ex22 = let - Test.label.deprecated "Add minutes, add no minutes" <| Test.expect (add +6 +41 +0 === "06:41") - -clock.test.ex23 = let - Test.label.deprecated "Add minutes, add to next hour" <| Test.expect (add +0 +45 +40 === "01:25") - -clock.test.ex24 = let - Test.label.deprecated "Add minutes, add more than one hour" <| Test.expect (add +10 +0 +61 === "11:01") - -clock.test.ex25 = let - Test.label.deprecated "Add minutes, add more than two hours with carry" <| Test.expect (add +0 +45 +160 === "03:25") - -clock.test.ex26 = let - Test.label.deprecated "Add minutes, add across midnight" <| Test.expect (add +23 +59 +2 === "00:01") - -clock.test.ex27 = let - Test.label.deprecated "Add minutes, add more than one day (1500 min = 25 hrs)" <| Test.expect (add +5 +32 +1500 === "06:32") - -clock.test.ex28 = let - Test.label.deprecated "Add minutes, add more than two days" <| Test.expect (add +1 +1 +3500 === "11:21") - -clock.test.ex29 = let - Test.label.deprecated "Subtract minutes, subtract minutes" <| Test.expect (subtract +10 +3 +3 === "10:00") - -clock.test.ex30 = let - Test.label.deprecated "Subtract minutes, subtract to previous hour" <| Test.expect (subtract +10 +3 +30 === "09:33") - -clock.test.ex31 = let - Test.label.deprecated "Subtract minutes, subtract more than an hour" <| Test.expect (subtract +10 +3 +70 === "08:53") - -clock.test.ex32 = let - Test.label.deprecated "Subtract minutes, subtract across midnight" <| Test.expect (subtract +0 +3 +4 === "23:59") - -clock.test.ex33 = let - Test.label.deprecated "Subtract minutes, subtract more than two hours" <| Test.expect (subtract +0 +0 +160 === "21:20") - -clock.test.ex34 = let - Test.label.deprecated "Subtract minutes, subtract more than two hours with borrow" <| Test.expect (subtract +6 +15 +160 === "03:35") - -clock.test.ex35 = let - Test.label.deprecated "Subtract minutes, subtract more than one day (1500 min = 25 hrs)" <| Test.expect (subtract +5 +32 +1500 === "04:32") - -clock.test.ex36 = let - Test.label.deprecated "Subtract minutes, subtract more than two days" <| Test.expect (subtract +2 +20 +3000 === "00:20") - -clock.test.ex37 = let - Test.label.deprecated "Compare two clocks for equality, clocks with same time" <| Test.expect (equal (+15, +37) (+15, +37) === true) - -clock.test.ex38 = let - Test.label.deprecated "Compare two clocks for equality, clocks a minute apart" <| Test.expect (equal (+15, +36) (+15, +37) === false) - -clock.test.ex39 = let - Test.label.deprecated "Compare two clocks for equality, clocks an hour apart" <| Test.expect (equal (+14, +37) (+15, +37) === false) - -clock.test.ex40 = let - Test.label.deprecated "Compare two clocks for equality, clocks with hour overflow" <| Test.expect (equal (+10, +37) (+34, +37) === true) - -clock.test.ex41 = let - Test.label.deprecated "Compare two clocks for equality, clocks with hour overflow by several days" <| Test.expect (equal (+3, +11) (+99, +11) === true) - -clock.test.ex42 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative hour" <| Test.expect (equal (+22, +40) (-2, +40) === true) - -clock.test.ex43 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative hour that wraps" <| Test.expect (equal (+17, +3) (-31, +3) === true) - -clock.test.ex44 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative hour that wraps multiple times" <| Test.expect (equal (+13, +49) (-83, +49) === true) - -clock.test.ex45 = let - Test.label.deprecated "Compare two clocks for equality, clocks with minute overflow" <| Test.expect (equal (+0, +1) (+0, +1441) === true) - -clock.test.ex46 = let - Test.label.deprecated "Compare two clocks for equality, clocks with minute overflow by several days" <| Test.expect (equal (+2, +2) (+2, +4322) === true) - -clock.test.ex47 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative minute" <| Test.expect (equal (+2, +40) (+3, -20) === true) - -clock.test.ex48 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative minute that wraps" <| Test.expect (equal (+4, +10) (+5, -1490) === true) - -clock.test.ex49 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative minute that wraps multiple times" <| Test.expect (equal (+6, +15) (+6, -4305) === true) - -clock.test.ex50 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative hours and minutes" <| Test.expect (equal (+7, +32) (-12, -268) === true) - -clock.test.ex51 = let - Test.label.deprecated "Compare two clocks for equality, clocks with negative hours and minutes that wrap" <| Test.expect (equal (+18, +7) (-54, -11513) === true) - -clock.test.ex52 = let - Test.label.deprecated "Compare two clocks for equality, full clock and zeroed clock" <| Test.expect (equal (+24, +0) (+0, +0) === true) - -test> clock.tests = runAll [ +clock.test.ex1 = verify do + labeled "Create a new clock with an initial time, on the hour" do + expected = "08:00" + actual = create +8 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex2 = verify do + labeled "Create a new clock with an initial time, past the hour" do + expected = "11:09" + actual = create +11 +9 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex3 = verify do + labeled "Create a new clock with an initial time, midnight is zero hours" do + expected = "00:00" + actual = create +24 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex4 = verify do + labeled "Create a new clock with an initial time, hour rolls over" do + expected = "01:00" + actual = create +25 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex5 = verify do + labeled "Create a new clock with an initial time, hour rolls over continuously" do + expected = "04:00" + actual = create +100 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex6 = verify do + labeled "Create a new clock with an initial time, sixty minutes is next hour" do + expected = "02:00" + actual = create +1 +60 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex7 = verify do + labeled "Create a new clock with an initial time, minutes roll over" do + expected = "02:40" + actual = create +0 +160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex8 = verify do + labeled "Create a new clock with an initial time, minutes roll over continuously" do + expected = "04:43" + actual = create +0 +1723 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex9 = verify do + labeled "Create a new clock with an initial time, hour and minutes roll over" do + expected = "03:40" + actual = create +25 +160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex10 = verify do + labeled "Create a new clock with an initial time, hour and minutes roll over continuously" do + expected = "11:01" + actual = create +201 +3001 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex11 = verify do + labeled "Create a new clock with an initial time, hour and minutes roll over to exactly midnight" do + expected = "00:00" + actual = create +72 +8640 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex12 = verify do + labeled "Create a new clock with an initial time, negative hour" do + expected = "23:15" + actual = create -1 +15 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex13 = verify do + labeled "Create a new clock with an initial time, negative hour rolls over" do + expected = "23:00" + actual = create -25 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex14 = verify do + labeled "Create a new clock with an initial time, negative hour rolls over continuously" do + expected = "05:00" + actual = create -91 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex15 = verify do + labeled "Create a new clock with an initial time, negative minutes" do + expected = "00:20" + actual = create +1 -40 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex16 = verify do + labeled "Create a new clock with an initial time, negative minutes roll over" do + expected = "22:20" + actual = create +1 -160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex17 = verify do + labeled "Create a new clock with an initial time, negative minutes roll over continuously" do + expected = "16:40" + actual = create +1 -4820 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex18 = verify do + labeled "Create a new clock with an initial time, negative sixty minutes is previous hour" do + expected = "01:00" + actual = create +2 -60 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex19 = verify do + labeled "Create a new clock with an initial time, negative hour and minutes both roll over" do + expected = "20:20" + actual = create -25 -160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex20 = verify do + labeled "Create a new clock with an initial time, negative hour and minutes both roll over continuously" do + expected = "22:10" + actual = create -121 -5810 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex21 = verify do + labeled "Add minutes, add minutes" do + expected = "10:03" + actual = add +10 +0 +3 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex22 = verify do + labeled "Add minutes, add no minutes" do + expected = "06:41" + actual = add +6 +41 +0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex23 = verify do + labeled "Add minutes, add to next hour" do + expected = "01:25" + actual = add +0 +45 +40 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex24 = verify do + labeled "Add minutes, add more than one hour" do + expected = "11:01" + actual = add +10 +0 +61 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex25 = verify do + labeled "Add minutes, add more than two hours with carry" do + expected = "03:25" + actual = add +0 +45 +160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex26 = verify do + labeled "Add minutes, add across midnight" do + expected = "00:01" + actual = add +23 +59 +2 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex27 = verify do + labeled "Add minutes, add more than one day (1500 min = 25 hrs)" do + expected = "06:32" + actual = add +5 +32 +1500 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex28 = verify do + labeled "Add minutes, add more than two days" do + expected = "11:21" + actual = add +1 +1 +3500 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex29 = verify do + labeled "Subtract minutes, subtract minutes" do + expected = "10:00" + actual = subtract +10 +3 +3 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex30 = verify do + labeled "Subtract minutes, subtract to previous hour" do + expected = "09:33" + actual = subtract +10 +3 +30 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex31 = verify do + labeled "Subtract minutes, subtract more than an hour" do + expected = "08:53" + actual = subtract +10 +3 +70 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex32 = verify do + labeled "Subtract minutes, subtract across midnight" do + expected = "23:59" + actual = subtract +0 +3 +4 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex33 = verify do + labeled "Subtract minutes, subtract more than two hours" do + expected = "21:20" + actual = subtract +0 +0 +160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex34 = verify do + labeled "Subtract minutes, subtract more than two hours with borrow" do + expected = "03:35" + actual = subtract +6 +15 +160 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex35 = verify do + labeled "Subtract minutes, subtract more than one day (1500 min = 25 hrs)" do + expected = "04:32" + actual = subtract +5 +32 +1500 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex36 = verify do + labeled "Subtract minutes, subtract more than two days" do + expected = "00:20" + actual = subtract +2 +20 +3000 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex37 = verify do + labeled "Compare two clocks for equality, clocks with same time" do + expected = true + actual = equal (+15, +37) (+15, +37) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex38 = verify do + labeled "Compare two clocks for equality, clocks a minute apart" do + expected = false + actual = equal (+15, +36) (+15, +37) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex39 = verify do + labeled "Compare two clocks for equality, clocks an hour apart" do + expected = false + actual = equal (+14, +37) (+15, +37) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex40 = verify do + labeled "Compare two clocks for equality, clocks with hour overflow" do + expected = true + actual = equal (+10, +37) (+34, +37) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex41 = verify do + labeled "Compare two clocks for equality, clocks with hour overflow by several days" do + expected = true + actual = equal (+3, +11) (+99, +11) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex42 = verify do + labeled "Compare two clocks for equality, clocks with negative hour" do + expected = true + actual = equal (+22, +40) (-2, +40) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex43 = verify do + labeled "Compare two clocks for equality, clocks with negative hour that wraps" do + expected = true + actual = equal (+17, +3) (-31, +3) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex44 = verify do + labeled "Compare two clocks for equality, clocks with negative hour that wraps multiple times" do + expected = true + actual = equal (+13, +49) (-83, +49) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex45 = verify do + labeled "Compare two clocks for equality, clocks with minute overflow" do + expected = true + actual = equal (+0, +1) (+0, +1441) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex46 = verify do + labeled "Compare two clocks for equality, clocks with minute overflow by several days" do + expected = true + actual = equal (+2, +2) (+2, +4322) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex47 = verify do + labeled "Compare two clocks for equality, clocks with negative minute" do + expected = true + actual = equal (+2, +40) (+3, -20) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex48 = verify do + labeled "Compare two clocks for equality, clocks with negative minute that wraps" do + expected = true + actual = equal (+4, +10) (+5, -1490) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex49 = verify do + labeled "Compare two clocks for equality, clocks with negative minute that wraps multiple times" do + expected = true + actual = equal (+6, +15) (+6, -4305) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex50 = verify do + labeled "Compare two clocks for equality, clocks with negative hours and minutes" do + expected = true + actual = equal (+7, +32) (-12, -268) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex51 = verify do + labeled "Compare two clocks for equality, clocks with negative hours and minutes that wrap" do + expected = true + actual = equal (+18, +7) (-54, -11513) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +clock.test.ex52 = verify do + labeled "Compare two clocks for equality, full clock and zeroed clock" do + expected = true + actual = equal (+24, +0) (+0, +0) + label "expected" expected + label "actual" actual + ensureEqual expected actual + +test> clock.tests = join [ clock.test.ex1, clock.test.ex2, clock.test.ex3, diff --git a/exercises/practice/collatz-conjecture/.meta/testAnnotation.json b/exercises/practice/collatz-conjecture/.meta/testAnnotation.json index f8a945e..fba208e 100644 --- a/exercises/practice/collatz-conjecture/.meta/testAnnotation.json +++ b/exercises/practice/collatz-conjecture/.meta/testAnnotation.json @@ -1,22 +1,22 @@ [ { "name": "zero steps for one", - "test_code": "let\n Test.label.deprecated \"zero steps for one\" <| Test.expect (steps 1 === Some 0)" + "test_code": "verify do\n labeled \"zero steps for one\" do\n expected = Some 0\n actual = steps 1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "divide if even", - "test_code": "let\n Test.label.deprecated \"divide if even\" <| Test.expect (steps 16 === Some 4)" + "test_code": "verify do\n labeled \"divide if even\" do\n expected = Some 4\n actual = steps 16\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "even and odd steps", - "test_code": "let\n Test.label.deprecated \"even and odd steps\" <| Test.expect (steps 12 === Some 9)" + "test_code": "verify do\n labeled \"even and odd steps\" do\n expected = Some 9\n actual = steps 12\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "large number of even and odd steps", - "test_code": "let\n Test.label.deprecated \"large number of even and odd steps\" <| Test.expect (steps 1000000 === Some 152)" + "test_code": "verify do\n labeled \"large number of even and odd steps\" do\n expected = Some 152\n actual = steps 1000000\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "zero is an error", - "test_code": "let\n Test.label.deprecated \"zero is an error\" <| Test.expect (steps 0 === None)" + "test_code": "verify do\n labeled \"zero is an error\" do\n expected = None\n actual = steps 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/collatz-conjecture/collatz.test.u b/exercises/practice/collatz-conjecture/collatz.test.u index 3e0388a..5a0e459 100644 --- a/exercises/practice/collatz-conjecture/collatz.test.u +++ b/exercises/practice/collatz-conjecture/collatz.test.u @@ -1,19 +1,44 @@ -collatzConjecture.test.ex1 = let - Test.label.deprecated "zero steps for one" <| Test.expect (steps 1 === Some 0) +collatzConjecture.test.ex1 = verify do + labeled "zero steps for one" do + expected = Some 0 + actual = steps 1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -collatzConjecture.test.ex2 = let - Test.label.deprecated "divide if even" <| Test.expect (steps 16 === Some 4) +collatzConjecture.test.ex2 = verify do + labeled "divide if even" do + expected = Some 4 + actual = steps 16 + label "expected" expected + label "actual" actual + ensureEqual expected actual -collatzConjecture.test.ex3 = let - Test.label.deprecated "even and odd steps" <| Test.expect (steps 12 === Some 9) +collatzConjecture.test.ex3 = verify do + labeled "even and odd steps" do + expected = Some 9 + actual = steps 12 + label "expected" expected + label "actual" actual + ensureEqual expected actual -collatzConjecture.test.ex4 = let - Test.label.deprecated "large number of even and odd steps" <| Test.expect (steps 1000000 === Some 152) +collatzConjecture.test.ex4 = verify do + labeled "large number of even and odd steps" do + expected = Some 152 + actual = steps 1000000 + label "expected" expected + label "actual" actual + ensureEqual expected actual -collatzConjecture.test.ex5 = let - Test.label.deprecated "zero is an error" <| Test.expect (steps 0 === None) +collatzConjecture.test.ex5 = verify do + labeled "zero is an error" do + expected = None + actual = steps 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -test> collatzConjecture.tests = runAll [ +test> collatzConjecture.tests = join [ collatzConjecture.test.ex1, collatzConjecture.test.ex2, collatzConjecture.test.ex3, diff --git a/exercises/practice/crypto-square/.meta/testAnnotation.json b/exercises/practice/crypto-square/.meta/testAnnotation.json index 0f1bd20..0f4a922 100644 --- a/exercises/practice/crypto-square/.meta/testAnnotation.json +++ b/exercises/practice/crypto-square/.meta/testAnnotation.json @@ -1,30 +1,30 @@ [ { "name": "empty plaintext results in an empty ciphertext", - "test_code": "let\n Test.label.deprecated \"empty plaintext results in an empty ciphertext\" <| Test.expect (ciphertext \"\" === \"\")" + "test_code": "verify do\n labeled \"empty plaintext results in an empty ciphertext\" do\n expected = \"\"\n actual = ciphertext \"\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Lowercase", - "test_code": "let\n Test.label.deprecated \"Lowercase\" <| Test.expect (ciphertext \"A\" === \"a\")" + "test_code": "verify do\n labeled \"Lowercase\" do\n expected = \"a\"\n actual = ciphertext \"A\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Remove spaces", - "test_code": "let\n Test.label.deprecated \"Remove spaces\" <| Test.expect (ciphertext \" b \" === \"b\")" + "test_code": "verify do\n labeled \"Remove spaces\" do\n expected = \"b\"\n actual = ciphertext \" b \"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Remove punctuation", - "test_code": "let\n Test.label.deprecated \"Remove punctuation\" <| Test.expect (ciphertext \"@1,%!\" === \"1\")" + "test_code": "verify do\n labeled \"Remove punctuation\" do\n expected = \"1\"\n actual = ciphertext \"@1,%!\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "9 character plaintext results in 3 chunks of 3 characters", - "test_code": "let\n Test.label.deprecated \"9 character plaintext results in 3 chunks of 3 characters\" <| Test.expect (ciphertext \"This is fun!\" === \"tsf hiu isn\")" + "test_code": "verify do\n labeled \"9 character plaintext results in 3 chunks of 3 characters\" do\n expected = \"tsf hiu isn\"\n actual = ciphertext \"This is fun!\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "8 character plaintext results in 3 chunks, the last one with a trailing space", - "test_code": "let\n Test.label.deprecated \"8 character plaintext results in 3 chunks, the last one with a trailing space\" <| Test.expect (ciphertext \"Chill out.\" === \"clu hlt io \")" + "test_code": "verify do\n labeled \"8 character plaintext results in 3 chunks, the last one with a trailing space\" do\n expected = \"clu hlt io \"\n actual = ciphertext \"Chill out.\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "54 character plaintext results in 7 chunks, the last two with trailing spaces", - "test_code": "let\n Test.label.deprecated \"54 character plaintext results in 7 chunks, the last two with trailing spaces\" <| Test.expect (ciphertext \"If man was meant to stay on the ground, god would have given us roots.\" === \"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau \")" + "test_code": "verify do\n labeled \"54 character plaintext results in 7 chunks, the last two with trailing spaces\" do\n expected = \"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau \"\n actual = ciphertext \"If man was meant to stay on the ground, god would have given us roots.\"\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/crypto-square/crypto.test.u b/exercises/practice/crypto-square/crypto.test.u index fd5b3d8..5acd01a 100644 --- a/exercises/practice/crypto-square/crypto.test.u +++ b/exercises/practice/crypto-square/crypto.test.u @@ -1,25 +1,60 @@ -cryptoSquare.test.ex1 = let - Test.label.deprecated "empty plaintext results in an empty ciphertext" <| Test.expect (ciphertext "" === "") +cryptoSquare.test.ex1 = verify do + labeled "empty plaintext results in an empty ciphertext" do + expected = "" + actual = ciphertext "" + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex2 = let - Test.label.deprecated "Lowercase" <| Test.expect (ciphertext "A" === "a") +cryptoSquare.test.ex2 = verify do + labeled "Lowercase" do + expected = "a" + actual = ciphertext "A" + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex3 = let - Test.label.deprecated "Remove spaces" <| Test.expect (ciphertext " b " === "b") +cryptoSquare.test.ex3 = verify do + labeled "Remove spaces" do + expected = "b" + actual = ciphertext " b " + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex4 = let - Test.label.deprecated "Remove punctuation" <| Test.expect (ciphertext "@1,%!" === "1") +cryptoSquare.test.ex4 = verify do + labeled "Remove punctuation" do + expected = "1" + actual = ciphertext "@1,%!" + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex5 = let - Test.label.deprecated "9 character plaintext results in 3 chunks of 3 characters" <| Test.expect (ciphertext "This is fun!" === "tsf hiu isn") +cryptoSquare.test.ex5 = verify do + labeled "9 character plaintext results in 3 chunks of 3 characters" do + expected = "tsf hiu isn" + actual = ciphertext "This is fun!" + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex6 = let - Test.label.deprecated "8 character plaintext results in 3 chunks, the last one with a trailing space" <| Test.expect (ciphertext "Chill out." === "clu hlt io ") +cryptoSquare.test.ex6 = verify do + labeled "8 character plaintext results in 3 chunks, the last one with a trailing space" do + expected = "clu hlt io " + actual = ciphertext "Chill out." + label "expected" expected + label "actual" actual + ensureEqual expected actual -cryptoSquare.test.ex7 = let - Test.label.deprecated "54 character plaintext results in 7 chunks, the last two with trailing spaces" <| Test.expect (ciphertext "If man was meant to stay on the ground, god would have given us roots." === "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ") +cryptoSquare.test.ex7 = verify do + labeled "54 character plaintext results in 7 chunks, the last two with trailing spaces" do + expected = "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau " + actual = ciphertext "If man was meant to stay on the ground, god would have given us roots." + label "expected" expected + label "actual" actual + ensureEqual expected actual -test> cryptoSquare.tests = runAll [ +test> cryptoSquare.tests = join [ cryptoSquare.test.ex1, cryptoSquare.test.ex2, cryptoSquare.test.ex3, diff --git a/exercises/practice/darts/.meta/testAnnotation.json b/exercises/practice/darts/.meta/testAnnotation.json index ef9edf3..3ddc05e 100644 --- a/exercises/practice/darts/.meta/testAnnotation.json +++ b/exercises/practice/darts/.meta/testAnnotation.json @@ -1,54 +1,54 @@ [ { "name": "Missed target", - "test_code": "let\n Test.label.deprecated \"Missed target\" <| Test.expect (score -9.0 9.0 === 0)" + "test_code": "verify do\n labeled \"Missed target\" do\n expected = 0\n actual = score -9.0 9.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "On the outer circle", - "test_code": "let\n Test.label.deprecated \"On the outer circle\" <| Test.expect (score 0.0 10.0 === 1)" + "test_code": "verify do\n labeled \"On the outer circle\" do\n expected = 1\n actual = score 0.0 10.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "On the middle circle", - "test_code": "let\n Test.label.deprecated \"On the middle circle\" <| Test.expect (score -5.0 0.0 === 5)" + "test_code": "verify do\n labeled \"On the middle circle\" do\n expected = 5\n actual = score -5.0 0.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "On the inner circle", - "test_code": "let\n Test.label.deprecated \"On the inner circle\" <| Test.expect (score 0.0 -1.0 === 10)" + "test_code": "verify do\n labeled \"On the inner circle\" do\n expected = 10\n actual = score 0.0 -1.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Exactly on centre", - "test_code": "let\n Test.label.deprecated \"Exactly on centre\" <| Test.expect (score 0.0 0.0 === 10)" + "test_code": "verify do\n labeled \"Exactly on centre\" do\n expected = 10\n actual = score 0.0 0.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Near the centre", - "test_code": "let\n Test.label.deprecated \"Near the centre\" <| Test.expect (score -0.1 -0.1 === 10)" + "test_code": "verify do\n labeled \"Near the centre\" do\n expected = 10\n actual = score -0.1 -0.1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just within the inner circle", - "test_code": "let\n Test.label.deprecated \"Just within the inner circle\" <| Test.expect (score 0.7 0.7 === 10)" + "test_code": "verify do\n labeled \"Just within the inner circle\" do\n expected = 10\n actual = score 0.7 0.7\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just outside the inner circle", - "test_code": "let\n Test.label.deprecated \"Just outside the inner circle\" <| Test.expect (score 0.8 -0.8 === 5)" + "test_code": "verify do\n labeled \"Just outside the inner circle\" do\n expected = 5\n actual = score 0.8 -0.8\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just within the middle circle", - "test_code": "let\n Test.label.deprecated \"Just within the middle circle\" <| Test.expect (score -3.5 3.5 === 5)" + "test_code": "verify do\n labeled \"Just within the middle circle\" do\n expected = 5\n actual = score -3.5 3.5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just outside the middle circle", - "test_code": "let\n Test.label.deprecated \"Just outside the middle circle\" <| Test.expect (score -3.6 -3.6 === 1)" + "test_code": "verify do\n labeled \"Just outside the middle circle\" do\n expected = 1\n actual = score -3.6 -3.6\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just within the outer circle", - "test_code": "let\n Test.label.deprecated \"Just within the outer circle\" <| Test.expect (score -7.0 7.0 === 1)" + "test_code": "verify do\n labeled \"Just within the outer circle\" do\n expected = 1\n actual = score -7.0 7.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Just outside the outer circle", - "test_code": "let\n Test.label.deprecated \"Just outside the outer circle\" <| Test.expect (score 7.1 -7.1 === 0)" + "test_code": "verify do\n labeled \"Just outside the outer circle\" do\n expected = 0\n actual = score 7.1 -7.1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Asymmetric position between the inner and middle circles", - "test_code": "let\n Test.label.deprecated \"Asymmetric position between the inner and middle circles\" <| Test.expect (score 0.5 -4.0 === 5)" + "test_code": "verify do\n labeled \"Asymmetric position between the inner and middle circles\" do\n expected = 5\n actual = score 0.5 -4.0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/darts/darts.test.u b/exercises/practice/darts/darts.test.u index aa0d0d9..27c410c 100644 --- a/exercises/practice/darts/darts.test.u +++ b/exercises/practice/darts/darts.test.u @@ -1,43 +1,108 @@ -darts.test.ex1 = let - Test.label.deprecated "Missed target" <| Test.expect (score -9.0 9.0 === 0) +darts.test.ex1 = verify do + labeled "Missed target" do + expected = 0 + actual = score -9.0 9.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex2 = let - Test.label.deprecated "On the outer circle" <| Test.expect (score 0.0 10.0 === 1) +darts.test.ex2 = verify do + labeled "On the outer circle" do + expected = 1 + actual = score 0.0 10.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex3 = let - Test.label.deprecated "On the middle circle" <| Test.expect (score -5.0 0.0 === 5) +darts.test.ex3 = verify do + labeled "On the middle circle" do + expected = 5 + actual = score -5.0 0.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex4 = let - Test.label.deprecated "On the inner circle" <| Test.expect (score 0.0 -1.0 === 10) +darts.test.ex4 = verify do + labeled "On the inner circle" do + expected = 10 + actual = score 0.0 -1.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex5 = let - Test.label.deprecated "Exactly on centre" <| Test.expect (score 0.0 0.0 === 10) +darts.test.ex5 = verify do + labeled "Exactly on centre" do + expected = 10 + actual = score 0.0 0.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex6 = let - Test.label.deprecated "Near the centre" <| Test.expect (score -0.1 -0.1 === 10) +darts.test.ex6 = verify do + labeled "Near the centre" do + expected = 10 + actual = score -0.1 -0.1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex7 = let - Test.label.deprecated "Just within the inner circle" <| Test.expect (score 0.7 0.7 === 10) +darts.test.ex7 = verify do + labeled "Just within the inner circle" do + expected = 10 + actual = score 0.7 0.7 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex8 = let - Test.label.deprecated "Just outside the inner circle" <| Test.expect (score 0.8 -0.8 === 5) +darts.test.ex8 = verify do + labeled "Just outside the inner circle" do + expected = 5 + actual = score 0.8 -0.8 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex9 = let - Test.label.deprecated "Just within the middle circle" <| Test.expect (score -3.5 3.5 === 5) +darts.test.ex9 = verify do + labeled "Just within the middle circle" do + expected = 5 + actual = score -3.5 3.5 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex10 = let - Test.label.deprecated "Just outside the middle circle" <| Test.expect (score -3.6 -3.6 === 1) +darts.test.ex10 = verify do + labeled "Just outside the middle circle" do + expected = 1 + actual = score -3.6 -3.6 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex11 = let - Test.label.deprecated "Just within the outer circle" <| Test.expect (score -7.0 7.0 === 1) +darts.test.ex11 = verify do + labeled "Just within the outer circle" do + expected = 1 + actual = score -7.0 7.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex12 = let - Test.label.deprecated "Just outside the outer circle" <| Test.expect (score 7.1 -7.1 === 0) +darts.test.ex12 = verify do + labeled "Just outside the outer circle" do + expected = 0 + actual = score 7.1 -7.1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -darts.test.ex13 = let - Test.label.deprecated "Asymmetric position between the inner and middle circles" <| Test.expect (score 0.5 -4.0 === 5) +darts.test.ex13 = verify do + labeled "Asymmetric position between the inner and middle circles" do + expected = 5 + actual = score 0.5 -4.0 + label "expected" expected + label "actual" actual + ensureEqual expected actual -test> darts.tests = runAll [ +test> darts.tests = join [ darts.test.ex1, darts.test.ex2, darts.test.ex3, diff --git a/exercises/practice/diamond/.meta/testAnnotation.json b/exercises/practice/diamond/.meta/testAnnotation.json index 50d52d4..0fc43db 100644 --- a/exercises/practice/diamond/.meta/testAnnotation.json +++ b/exercises/practice/diamond/.meta/testAnnotation.json @@ -1,22 +1,22 @@ [ { "name": "Degenerate case with a single 'A' row", - "test_code": "let\n Test.label.deprecated \"Degenerate case with a single 'A' row\" <| Test.expect (rows ?A === [\"A\"])" + "test_code": "verify do\n labeled \"Degenerate case with a single 'A' row\" do\n expected = [\"A\"]\n actual = rows ?A\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Degenerate case with no row containing 3 distinct groups of spaces", - "test_code": "let\n Test.label.deprecated \"Degenerate case with no row containing 3 distinct groups of spaces\" <| Test.expect (rows ?B === [\" A \",\"B B\",\" A \"])" + "test_code": "verify do\n labeled \"Degenerate case with no row containing 3 distinct groups of spaces\" do\n expected = [\" A \",\"B B\",\" A \"]\n actual = rows ?B\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Smallest non-degenerate case with odd diamond side length", - "test_code": "let\n Test.label.deprecated \"Smallest non-degenerate case with odd diamond side length\" <| Test.expect (rows ?C === [\" A \",\" B B \",\"C C\",\" B B \",\" A \"])" + "test_code": "verify do\n labeled \"Smallest non-degenerate case with odd diamond side length\" do\n expected = [\" A \",\" B B \",\"C C\",\" B B \",\" A \"]\n actual = rows ?C\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Smallest non-degenerate case with even diamond side length", - "test_code": "let\n Test.label.deprecated \"Smallest non-degenerate case with even diamond side length\" <| Test.expect (rows ?D === [\" A \",\" B B \",\" C C \",\"D D\",\" C C \",\" B B \",\" A \"])" + "test_code": "verify do\n labeled \"Smallest non-degenerate case with even diamond side length\" do\n expected = [\" A \",\" B B \",\" C C \",\"D D\",\" C C \",\" B B \",\" A \"]\n actual = rows ?D\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Largest possible diamond", - "test_code": "let\n Test.label.deprecated \"Largest possible diamond\" <| Test.expect (rows ?Z === [\" A \",\" B B \",\" C C \",\" D D \",\" E E \",\" F F \",\" G G \",\" H H \",\" I I \",\" J J \",\" K K \",\" L L \",\" M M \",\" N N \",\" O O \",\" P P \",\" Q Q \",\" R R \",\" S S \",\" T T \",\" U U \",\" V V \",\" W W \",\" X X \",\" Y Y \",\"Z Z\",\" Y Y \",\" X X \",\" W W \",\" V V \",\" U U \",\" T T \",\" S S \",\" R R \",\" Q Q \",\" P P \",\" O O \",\" N N \",\" M M \",\" L L \",\" K K \",\" J J \",\" I I \",\" H H \",\" G G \",\" F F \",\" E E \",\" D D \",\" C C \",\" B B \",\" A \"])" + "test_code": "verify do\n labeled \"Largest possible diamond\" do\n expected = [\" A \",\" B B \",\" C C \",\" D D \",\" E E \",\" F F \",\" G G \",\" H H \",\" I I \",\" J J \",\" K K \",\" L L \",\" M M \",\" N N \",\" O O \",\" P P \",\" Q Q \",\" R R \",\" S S \",\" T T \",\" U U \",\" V V \",\" W W \",\" X X \",\" Y Y \",\"Z Z\",\" Y Y \",\" X X \",\" W W \",\" V V \",\" U U \",\" T T \",\" S S \",\" R R \",\" Q Q \",\" P P \",\" O O \",\" N N \",\" M M \",\" L L \",\" K K \",\" J J \",\" I I \",\" H H \",\" G G \",\" F F \",\" E E \",\" D D \",\" C C \",\" B B \",\" A \"]\n actual = rows ?Z\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/diamond/diamond.test.u b/exercises/practice/diamond/diamond.test.u index 74fb487..95e2d8a 100644 --- a/exercises/practice/diamond/diamond.test.u +++ b/exercises/practice/diamond/diamond.test.u @@ -1,19 +1,44 @@ -diamond.test.ex1 = let - Test.label.deprecated "Degenerate case with a single 'A' row" <| Test.expect (rows ?A === ["A"]) +diamond.test.ex1 = verify do + labeled "Degenerate case with a single 'A' row" do + expected = ["A"] + actual = rows ?A + label "expected" expected + label "actual" actual + ensureEqual expected actual -diamond.test.ex2 = let - Test.label.deprecated "Degenerate case with no row containing 3 distinct groups of spaces" <| Test.expect (rows ?B === [" A ","B B"," A "]) +diamond.test.ex2 = verify do + labeled "Degenerate case with no row containing 3 distinct groups of spaces" do + expected = [" A ","B B"," A "] + actual = rows ?B + label "expected" expected + label "actual" actual + ensureEqual expected actual -diamond.test.ex3 = let - Test.label.deprecated "Smallest non-degenerate case with odd diamond side length" <| Test.expect (rows ?C === [" A "," B B ","C C"," B B "," A "]) +diamond.test.ex3 = verify do + labeled "Smallest non-degenerate case with odd diamond side length" do + expected = [" A "," B B ","C C"," B B "," A "] + actual = rows ?C + label "expected" expected + label "actual" actual + ensureEqual expected actual -diamond.test.ex4 = let - Test.label.deprecated "Smallest non-degenerate case with even diamond side length" <| Test.expect (rows ?D === [" A "," B B "," C C ","D D"," C C "," B B "," A "]) +diamond.test.ex4 = verify do + labeled "Smallest non-degenerate case with even diamond side length" do + expected = [" A "," B B "," C C ","D D"," C C "," B B "," A "] + actual = rows ?D + label "expected" expected + label "actual" actual + ensureEqual expected actual -diamond.test.ex5 = let - Test.label.deprecated "Largest possible diamond" <| Test.expect (rows ?Z === [" A "," B B "," C C "," D D "," E E "," F F "," G G "," H H "," I I "," J J "," K K "," L L "," M M "," N N "," O O "," P P "," Q Q "," R R "," S S "," T T "," U U "," V V "," W W "," X X "," Y Y ","Z Z"," Y Y "," X X "," W W "," V V "," U U "," T T "," S S "," R R "," Q Q "," P P "," O O "," N N "," M M "," L L "," K K "," J J "," I I "," H H "," G G "," F F "," E E "," D D "," C C "," B B "," A "]) +diamond.test.ex5 = verify do + labeled "Largest possible diamond" do + expected = [" A "," B B "," C C "," D D "," E E "," F F "," G G "," H H "," I I "," J J "," K K "," L L "," M M "," N N "," O O "," P P "," Q Q "," R R "," S S "," T T "," U U "," V V "," W W "," X X "," Y Y ","Z Z"," Y Y "," X X "," W W "," V V "," U U "," T T "," S S "," R R "," Q Q "," P P "," O O "," N N "," M M "," L L "," K K "," J J "," I I "," H H "," G G "," F F "," E E "," D D "," C C "," B B "," A "] + actual = rows ?Z + label "expected" expected + label "actual" actual + ensureEqual expected actual -test> diamond.tests = runAll [ +test> diamond.tests = join [ diamond.test.ex1, diamond.test.ex2, diamond.test.ex3, diff --git a/exercises/practice/difference-of-squares/.meta/testAnnotation.json b/exercises/practice/difference-of-squares/.meta/testAnnotation.json index 57d13b4..b2b0926 100644 --- a/exercises/practice/difference-of-squares/.meta/testAnnotation.json +++ b/exercises/practice/difference-of-squares/.meta/testAnnotation.json @@ -1,38 +1,38 @@ [ { "name": "Square of sum 1", - "test_code": "let\n Test.label.deprecated \"Square of sum 1\" <| Test.expect (squareOfSum 1 === 1)" + "test_code": "verify do\n labeled \"Square of sum 1\" do\n expected = 1\n actual = squareOfSum 1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Square of sum 5", - "test_code": "let\n Test.label.deprecated \"Square of sum 5\" <| Test.expect (squareOfSum 5 === 225)" + "test_code": "verify do\n labeled \"Square of sum 5\" do\n expected = 225\n actual = squareOfSum 5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Square of sum 100", - "test_code": "let\n Test.label.deprecated \"Square of sum 100\" <| Test.expect (squareOfSum 100 === 25502500)" + "test_code": "verify do\n labeled \"Square of sum 100\" do\n expected = 25502500\n actual = squareOfSum 100\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Sum of squares 1", - "test_code": "let\n Test.label.deprecated \"Sum of squares 1\" <| Test.expect (sumOfSquares 1 === 1)" + "test_code": "verify do\n labeled \"Sum of squares 1\" do\n expected = 1\n actual = sumOfSquares 1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Sum of squares 5", - "test_code": "let\n Test.label.deprecated \"Sum of squares 5\" <| Test.expect (sumOfSquares 5 === 55)" + "test_code": "verify do\n labeled \"Sum of squares 5\" do\n expected = 55\n actual = sumOfSquares 5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Sum of squares 100", - "test_code": "let\n Test.label.deprecated \"Sum of squares 100\" <| Test.expect (sumOfSquares 100 === 338350)" + "test_code": "verify do\n labeled \"Sum of squares 100\" do\n expected = 338350\n actual = sumOfSquares 100\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Difference of squares 1", - "test_code": "let\n Test.label.deprecated \"Difference of squares 1\" <| Test.expect (difference 1 === 0)" + "test_code": "verify do\n labeled \"Difference of squares 1\" do\n expected = 0\n actual = difference 1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Difference of squares 5", - "test_code": "let\n Test.label.deprecated \"Difference of squares 5\" <| Test.expect (difference 5 === 170)" + "test_code": "verify do\n labeled \"Difference of squares 5\" do\n expected = 170\n actual = difference 5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "Difference of squares 100", - "test_code": "let\n Test.label.deprecated \"Difference of squares 100\" <| Test.expect (difference 100 === 25164150)" + "test_code": "verify do\n labeled \"Difference of squares 100\" do\n expected = 25164150\n actual = difference 100\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/difference-of-squares/differenceOfSquares.test.u b/exercises/practice/difference-of-squares/differenceOfSquares.test.u index 92ec970..8e840e1 100644 --- a/exercises/practice/difference-of-squares/differenceOfSquares.test.u +++ b/exercises/practice/difference-of-squares/differenceOfSquares.test.u @@ -1,31 +1,76 @@ -differenceOfSquares.test.ex1 = let - Test.label.deprecated "Square of sum 1" <| Test.expect (squareOfSum 1 === 1) +differenceOfSquares.test.ex1 = verify do + labeled "Square of sum 1" do + expected = 1 + actual = squareOfSum 1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex2 = let - Test.label.deprecated "Square of sum 5" <| Test.expect (squareOfSum 5 === 225) +differenceOfSquares.test.ex2 = verify do + labeled "Square of sum 5" do + expected = 225 + actual = squareOfSum 5 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex3 = let - Test.label.deprecated "Square of sum 100" <| Test.expect (squareOfSum 100 === 25502500) +differenceOfSquares.test.ex3 = verify do + labeled "Square of sum 100" do + expected = 25502500 + actual = squareOfSum 100 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex4 = let - Test.label.deprecated "Sum of squares 1" <| Test.expect (sumOfSquares 1 === 1) +differenceOfSquares.test.ex4 = verify do + labeled "Sum of squares 1" do + expected = 1 + actual = sumOfSquares 1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex5 = let - Test.label.deprecated "Sum of squares 5" <| Test.expect (sumOfSquares 5 === 55) +differenceOfSquares.test.ex5 = verify do + labeled "Sum of squares 5" do + expected = 55 + actual = sumOfSquares 5 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex6 = let - Test.label.deprecated "Sum of squares 100" <| Test.expect (sumOfSquares 100 === 338350) +differenceOfSquares.test.ex6 = verify do + labeled "Sum of squares 100" do + expected = 338350 + actual = sumOfSquares 100 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex7 = let - Test.label.deprecated "Difference of squares 1" <| Test.expect (difference 1 === 0) +differenceOfSquares.test.ex7 = verify do + labeled "Difference of squares 1" do + expected = 0 + actual = difference 1 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex8 = let - Test.label.deprecated "Difference of squares 5" <| Test.expect (difference 5 === 170) +differenceOfSquares.test.ex8 = verify do + labeled "Difference of squares 5" do + expected = 170 + actual = difference 5 + label "expected" expected + label "actual" actual + ensureEqual expected actual -differenceOfSquares.test.ex9 = let - Test.label.deprecated "Difference of squares 100" <| Test.expect (difference 100 === 25164150) +differenceOfSquares.test.ex9 = verify do + labeled "Difference of squares 100" do + expected = 25164150 + actual = difference 100 + label "expected" expected + label "actual" actual + ensureEqual expected actual -test> differenceOfSquares.tests = runAll [ +test> differenceOfSquares.tests = join [ differenceOfSquares.test.ex1, differenceOfSquares.test.ex2, differenceOfSquares.test.ex3, @@ -35,4 +80,4 @@ test> differenceOfSquares.tests = runAll [ differenceOfSquares.test.ex7, differenceOfSquares.test.ex8, differenceOfSquares.test.ex9 -] \ No newline at end of file +] diff --git a/exercises/practice/dnd-character/.meta/testAnnotation.json b/exercises/practice/dnd-character/.meta/testAnnotation.json index ad9d5a5..44f6fbc 100644 --- a/exercises/practice/dnd-character/.meta/testAnnotation.json +++ b/exercises/practice/dnd-character/.meta/testAnnotation.json @@ -1,74 +1,74 @@ [ { "name": "computes the modifier for 18 to be 4", - "test_code": "input = 18\n expected = +4\n Test.label.deprecated \"computes the modifier for 18 to be 4\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 18 to be 4\" do\n expected = +4\n actual = modifier 18\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 17 to be 3", - "test_code": "input = 17\n expected = +3\n Test.label.deprecated \"computes the modifier for 17 to be 3\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 17 to be 3\" do\n expected = +3\n actual = modifier 17\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 16 to be 3", - "test_code": "input = 16\n expected = +3\n Test.label.deprecated \"computes the modifier for 16 to be 3\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 16 to be 3\" do\n expected = +3\n actual = modifier 16\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 15 to be 2", - "test_code": "input = 15\n expected = +2\n Test.label.deprecated \"computes the modifier for 15 to be 2\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 15 to be 2\" do\n expected = +2\n actual = modifier 15\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 14 to be 2", - "test_code": "input = 14\n expected = +2\n Test.label.deprecated \"computes the modifier for 14 to be 2\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 14 to be 2\" do\n expected = +2\n actual = modifier 14\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 13 to be 1", - "test_code": "input = 13\n expected = +1\n Test.label.deprecated \"computes the modifier for 13 to be 1\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 13 to be 1\" do\n expected = +1\n actual = modifier 13\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 12 to be 1", - "test_code": "input = 12\n expected = +1\n Test.label.deprecated \"computes the modifier for 12 to be 1\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 12 to be 1\" do\n expected = +1\n actual = modifier 12\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 11 to be 0", - "test_code": "input = 11\n expected = +0\n Test.label.deprecated \"computes the modifier for 11 to be 0\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 11 to be 0\" do\n expected = +0\n actual = modifier 11\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 10 to be 0", - "test_code": "input = 10\n expected = +0\n Test.label.deprecated \"computes the modifier for 10 to be 0\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 10 to be 0\" do\n expected = +0\n actual = modifier 10\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 9 to be -1", - "test_code": "input = 9\n expected = -1\n Test.label.deprecated \"computes the modifier for 9 to be -1\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 9 to be -1\" do\n expected = -1\n actual = modifier 9\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 8 to be -1", - "test_code": "input = 8\n expected = -1\n Test.label.deprecated \"computes the modifier for 8 to be -1\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 8 to be -1\" do\n expected = -1\n actual = modifier 8\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 7 to be -2", - "test_code": "input = 7\n expected = -2\n Test.label.deprecated \"computes the modifier for 7 to be -2\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 7 to be -2\" do\n expected = -2\n actual = modifier 7\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 6 to be -2", - "test_code": "input = 6\n expected = -2\n Test.label.deprecated \"computes the modifier for 6 to be -2\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 6 to be -2\" do\n expected = -2\n actual = modifier 6\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 5 to be -3", - "test_code": "input = 5\n expected = -3\n Test.label.deprecated \"computes the modifier for 5 to be -3\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 5 to be -3\" do\n expected = -3\n actual = modifier 5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 4 to be -3", - "test_code": "input = 4\n expected = -3\n Test.label.deprecated \"computes the modifier for 4 to be -3\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 4 to be -3\" do\n expected = -3\n actual = modifier 4\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "computes the modifier for 3 to be -4", - "test_code": "input = 3\n expected = -4\n Test.label.deprecated \"computes the modifier for 3 to be -4\" <| expect (expected == modifier input)" + "test_code": "verify do\n labeled \"computes the modifier for 3 to be -4\" do\n expected = -4\n actual = modifier 3\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "generates value within range", - "test_code": "do\n use test.deprecated.gen nat\n seed = !nat\n calculatedAbility = Random.lcg seed ability_\n Test.label.deprecated \"generates value within range\" <| expect (Nat.inRange 3 19 calculatedAbility)" + "test_code": "verify do\n labeled \"generates value within range\" do\n Each.repeat 10\n calculatedAbility = !ability_\n label \"calculated ability\" calculatedAbility\n ensure (Nat.inRange 3 19 calculatedAbility)" }, { "name": "generates valid character", - "test_code": "do\n use test.deprecated.gen nat\n seed = !nat\n (Character strength dexterity constitution intelligence wisdom charisma hitpoints) = Random.lcg seed character\n expectedHitpoints = Int.abs (+10 Int.+ modifier constitution)\n expect ((Nat.inRange 3 19 strength) && (Nat.inRange 3 19 dexterity) && (Nat.inRange 3 19 constitution) && (Nat.inRange 3 19 intelligence) && (Nat.inRange 3 19 wisdom) && (Nat.inRange 3 19 charisma) && (hitpoints == expectedHitpoints)\n ) |> Test.label.deprecated \"generates valid character\"" + "test_code": "verify do\n generateErrorMessage attributeName value =\n use Nat toText\n attributeName ++\n \" has the wrong value. Generated value: \" ++\n toText value\n labeled \"generates valid character\" do\n Each.repeat 10\n (Character strength dexterity constitution intelligence wisdom charisma hitpoints) = !character\n expectedHitpoints = Int.abs (+10 Int.+ modifier constitution)\n ensureWith (generateErrorMessage \"Strength\" strength) (Nat.inRange 3 19 strength)\n ensureWith (generateErrorMessage \"Dexterity\" dexterity) (Nat.inRange 3 19 dexterity)\n ensureWith (generateErrorMessage \"Constitution\" constitution) (Nat.inRange 3 19 constitution)\n ensureWith (generateErrorMessage \"Intelligence\" intelligence) (Nat.inRange 3 19 intelligence)\n ensureWith (generateErrorMessage \"Wisdom\" wisdom) (Nat.inRange 3 19 wisdom)\n ensureWith (generateErrorMessage \"Charisma\" charisma) (Nat.inRange 3 19 charisma)\n ensureWith (generateErrorMessage \"Hitpoints\" hitpoints) (hitpoints == expectedHitpoints)" } ] \ No newline at end of file diff --git a/exercises/practice/dnd-character/dndCharacter.test.u b/exercises/practice/dnd-character/dndCharacter.test.u index 4b45992..12ddcd3 100644 --- a/exercises/practice/dnd-character/dndCharacter.test.u +++ b/exercises/practice/dnd-character/dndCharacter.test.u @@ -1,117 +1,173 @@ -use base.test.gen - -dndCharacter.test.testModifier.ex1 = - input = 18 - expected = +4 - Test.label.deprecated "computes the modifier for 18 to be 4" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex2 = - input = 17 - expected = +3 - Test.label.deprecated "computes the modifier for 17 to be 3" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex3 = - input = 16 - expected = +3 - Test.label.deprecated "computes the modifier for 16 to be 3" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex4 = - input = 15 - expected = +2 - Test.label.deprecated "computes the modifier for 15 to be 2" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex5 = - input = 14 - expected = +2 - Test.label.deprecated "computes the modifier for 14 to be 2" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex6 = - input = 13 - expected = +1 - Test.label.deprecated "computes the modifier for 13 to be 1" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex7 = - input = 12 - expected = +1 - Test.label.deprecated "computes the modifier for 12 to be 1" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex8 = - input = 11 - expected = +0 - Test.label.deprecated "computes the modifier for 11 to be 0" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex9 = - input = 10 - expected = +0 - Test.label.deprecated "computes the modifier for 10 to be 0" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex10 = - input = 9 - expected = -1 - Test.label.deprecated "computes the modifier for 9 to be -1" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex11 = - input = 8 - expected = -1 - Test.label.deprecated "computes the modifier for 8 to be -1" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex12 = - input = 7 - expected = -2 - Test.label.deprecated "computes the modifier for 7 to be -2" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex13 = - input = 6 - expected = -2 - Test.label.deprecated "computes the modifier for 6 to be -2" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex14 = - input = 5 - expected = -3 - Test.label.deprecated "computes the modifier for 5 to be -3" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex15 = - input = 4 - expected = -3 - Test.label.deprecated "computes the modifier for 4 to be -3" <| expect (expected == modifier input) - -dndCharacter.test.testModifier.ex16 = - input = 3 - expected = -4 - Test.label.deprecated "computes the modifier for 3 to be -4" <| expect (expected == modifier input) - - -dndCharacter.test.testAbility = do - use test.deprecated.gen nat - seed = !nat - calculatedAbility = Random.lcg seed ability_ - Test.label.deprecated "generates value within range" <| expect (Nat.inRange 3 19 calculatedAbility) - -dndCharacter.test.testCharacter = do - use test.deprecated.gen nat - seed = !nat - (Character strength dexterity constitution intelligence wisdom charisma hitpoints) = Random.lcg seed character - expectedHitpoints = Int.abs (+10 Int.+ modifier constitution) - expect ((Nat.inRange 3 19 strength) && (Nat.inRange 3 19 dexterity) && (Nat.inRange 3 19 constitution) && (Nat.inRange 3 19 intelligence) && (Nat.inRange 3 19 wisdom) && (Nat.inRange 3 19 charisma) && (hitpoints == expectedHitpoints) - ) |> Test.label.deprecated "generates valid character" +dndCharacter.modifier.test.ex1 = verify do + labeled "computes the modifier for 18 to be 4" do + expected = +4 + actual = modifier 18 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex2 = verify do + labeled "computes the modifier for 17 to be 3" do + expected = +3 + actual = modifier 17 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex3 = verify do + labeled "computes the modifier for 16 to be 3" do + expected = +3 + actual = modifier 16 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex4 = verify do + labeled "computes the modifier for 15 to be 2" do + expected = +2 + actual = modifier 15 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex5 = verify do + labeled "computes the modifier for 14 to be 2" do + expected = +2 + actual = modifier 14 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex6 = verify do + labeled "computes the modifier for 13 to be 1" do + expected = +1 + actual = modifier 13 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex7 = verify do + labeled "computes the modifier for 12 to be 1" do + expected = +1 + actual = modifier 12 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex8 = verify do + labeled "computes the modifier for 11 to be 0" do + expected = +0 + actual = modifier 11 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex9 = verify do + labeled "computes the modifier for 10 to be 0" do + expected = +0 + actual = modifier 10 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex10 = verify do + labeled "computes the modifier for 9 to be -1" do + expected = -1 + actual = modifier 9 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex11 = verify do + labeled "computes the modifier for 8 to be -1" do + expected = -1 + actual = modifier 8 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex12 = verify do + labeled "computes the modifier for 7 to be -2" do + expected = -2 + actual = modifier 7 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex13 = verify do + labeled "computes the modifier for 6 to be -2" do + expected = -2 + actual = modifier 6 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex14 = verify do + labeled "computes the modifier for 5 to be -3" do + expected = -3 + actual = modifier 5 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex15 = verify do + labeled "computes the modifier for 4 to be -3" do + expected = -3 + actual = modifier 4 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.modifier.test.ex16 = verify do + labeled "computes the modifier for 3 to be -4" do + expected = -4 + actual = modifier 3 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +dndCharacter.ability_.test = verify do + labeled "generates value within range" do + Each.repeat 10 + calculatedAbility = !ability_ + label "calculated ability" calculatedAbility + ensure (Nat.inRange 3 19 calculatedAbility) + +dndCharacter.character.test = verify do + generateErrorMessage attributeName value = + use Nat toText + attributeName ++ + " has the wrong value. Generated value: " ++ + toText value + labeled "generates valid character" do + Each.repeat 10 + (Character strength dexterity constitution intelligence wisdom charisma hitpoints) = !character + expectedHitpoints = Int.abs (+10 Int.+ modifier constitution) + ensureWith (generateErrorMessage "Strength" strength) (Nat.inRange 3 19 strength) + ensureWith (generateErrorMessage "Dexterity" dexterity) (Nat.inRange 3 19 dexterity) + ensureWith (generateErrorMessage "Constitution" constitution) (Nat.inRange 3 19 constitution) + ensureWith (generateErrorMessage "Intelligence" intelligence) (Nat.inRange 3 19 intelligence) + ensureWith (generateErrorMessage "Wisdom" wisdom) (Nat.inRange 3 19 wisdom) + ensureWith (generateErrorMessage "Charisma" charisma) (Nat.inRange 3 19 charisma) + ensureWith (generateErrorMessage "Hitpoints" hitpoints) (hitpoints == expectedHitpoints) test> dndCharacter.tests = - [ runs 10 dndCharacter.test.testAbility - , runs 10 dndCharacter.test.testCharacter - , Test.run dndCharacter.test.testModifier.ex1 - , Test.run dndCharacter.test.testModifier.ex2 - , Test.run dndCharacter.test.testModifier.ex3 - , Test.run dndCharacter.test.testModifier.ex4 - , Test.run dndCharacter.test.testModifier.ex5 - , Test.run dndCharacter.test.testModifier.ex6 - , Test.run dndCharacter.test.testModifier.ex7 - , Test.run dndCharacter.test.testModifier.ex8 - , Test.run dndCharacter.test.testModifier.ex9 - , Test.run dndCharacter.test.testModifier.ex10 - , Test.run dndCharacter.test.testModifier.ex11 - , Test.run dndCharacter.test.testModifier.ex12 - , Test.run dndCharacter.test.testModifier.ex13 - , Test.run dndCharacter.test.testModifier.ex14 - , Test.run dndCharacter.test.testModifier.ex15 - , Test.run dndCharacter.test.testModifier.ex16 - ] |> List.join + [ dndCharacter.ability_.test + , dndCharacter.character.test + , dndCharacter.modifier.test.ex1 + , dndCharacter.modifier.test.ex2 + , dndCharacter.modifier.test.ex3 + , dndCharacter.modifier.test.ex4 + , dndCharacter.modifier.test.ex5 + , dndCharacter.modifier.test.ex6 + , dndCharacter.modifier.test.ex7 + , dndCharacter.modifier.test.ex8 + , dndCharacter.modifier.test.ex9 + , dndCharacter.modifier.test.ex10 + , dndCharacter.modifier.test.ex11 + , dndCharacter.modifier.test.ex12 + , dndCharacter.modifier.test.ex13 + , dndCharacter.modifier.test.ex14 + , dndCharacter.modifier.test.ex15 + , dndCharacter.modifier.test.ex16 + ] |> join