Skip to content

Commit

Permalink
Test upgrades for the following exercises:
Browse files Browse the repository at this point in the history
    - clock
    - Collatz conjecture
    - crypto square
    - darts
    - diamond
    - difference of squares
    - D'n'D character
  • Loading branch information
SimaDovakin committed Feb 8, 2025
1 parent d3a3de7 commit 6c76b96
Show file tree
Hide file tree
Showing 14 changed files with 982 additions and 471 deletions.
106 changes: 53 additions & 53 deletions exercises/practice/clock/.meta/testAnnotation.json

Large diffs are not rendered by default.

574 changes: 417 additions & 157 deletions exercises/practice/clock/clock.test.u

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions exercises/practice/collatz-conjecture/.meta/testAnnotation.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
]
47 changes: 36 additions & 11 deletions exercises/practice/collatz-conjecture/collatz.test.u
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
16 changes: 8 additions & 8 deletions exercises/practice/crypto-square/.meta/testAnnotation.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
]
65 changes: 50 additions & 15 deletions exercises/practice/crypto-square/crypto.test.u
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
28 changes: 14 additions & 14 deletions exercises/practice/darts/.meta/testAnnotation.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
]
Loading

0 comments on commit 6c76b96

Please sign in to comment.