From 2686ef2e5709aeb739e7696295ae29b8703dac0c Mon Sep 17 00:00:00 2001 From: SimaDovakin Date: Sat, 18 Jan 2025 18:13:56 +0200 Subject: [PATCH 1/2] Upgraded tests for the allergies exercise. --- .../allergies/.meta/testAnnotation.json | 102 ++-- exercises/practice/allergies/allergies.test.u | 558 +++++++++++++----- 2 files changed, 455 insertions(+), 205 deletions(-) diff --git a/exercises/practice/allergies/.meta/testAnnotation.json b/exercises/practice/allergies/.meta/testAnnotation.json index 445513a..63e3582 100644 --- a/exercises/practice/allergies/.meta/testAnnotation.json +++ b/exercises/practice/allergies/.meta/testAnnotation.json @@ -1,202 +1,202 @@ [ { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"eggs\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = false\n actual = allergicTo \"eggs\" 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to eggs", - "test_code": "let\n Test.label.deprecated \"allergic only to eggs\" <| Test.expect (allergicTo \"eggs\" 1 === true)" + "test_code": "verify do\n labeled \"allergic only to eggs\" do\n expected = true\n actual = allergicTo \"eggs\" 1\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to eggs and something else", - "test_code": "let\n Test.label.deprecated \"allergic to eggs and something else\" <| Test.expect (allergicTo \"eggs\" 3 === true)" + "test_code": "verify do\n labeled \"allergic to eggs and something else\" do\n expected = true\n actual = allergicTo \"eggs\" 3\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not eggs", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not eggs\" <| Test.expect (allergicTo \"eggs\" 2 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not eggs\" do\n expected = false\n actual = allergicTo \"eggs\" 2\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"eggs\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = true\n actual = allergicTo \"eggs\" 255\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"peanuts\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = false\n actual = allergicTo \"peanuts\" 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to peanuts", - "test_code": "let\n Test.label.deprecated \"allergic only to peanuts\" <| Test.expect (allergicTo \"peanuts\" 2 === true)" + "test_code": "verify do\n labeled \"allergic only to peanuts\" do\n expected = true\n actual = allergicTo \"peanuts\" 2\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to peanuts and something else", - "test_code": "let\n Test.label.deprecated \"allergic to peanuts and something else\" <| Test.expect (allergicTo \"peanuts\" 7 === true)" + "test_code": "verify do\n labeled \"allergic to peanuts and something else\" do\n expected = true\n actual = allergicTo \"peanuts\" 7\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not peanuts", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not peanuts\" <| Test.expect (allergicTo \"peanuts\" 5 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not peanuts\" do\n expected = false\n actual = allergicTo \"peanuts\" 5\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"peanuts\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = true\n actual = allergicTo \"peanuts\" 255\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"shellfish\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = false\n actual = allergicTo \"shellfish\" 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to shellfish", - "test_code": "let\n Test.label.deprecated \"allergic only to shellfish\" <| Test.expect (allergicTo \"shellfish\" 4 === true)" + "test_code": "verify do\n labeled \"allergic only to shellfish\" do\n expected = true\n actual = allergicTo \"shellfish\" 4\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to shellfish and something else", - "test_code": "let\n Test.label.deprecated \"allergic to shellfish and something else\" <| Test.expect (allergicTo \"shellfish\" 14 === true)" + "test_code": "verify do\n labeled \"allergic to shellfish and something else\" do\n expected = true\n actual = allergicTo \"shellfish\" 14\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not shellfish", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not shellfish\" <| Test.expect (allergicTo \"shellfish\" 10 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not shellfish\" do\n expected = false\n actual = allergicTo \"shellfish\" 10\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"shellfish\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = true\n actual = allergicTo \"shellfish\" 255\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"strawberries\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = false\n actual = allergicTo \"strawberries\" 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to strawberries", - "test_code": "let\n Test.label.deprecated \"allergic only to strawberries\" <| Test.expect (allergicTo \"strawberries\" 8 === true)" + "test_code": "verify do\n labeled \"allergic only to strawberries\" do\n expected = true\n actual = allergicTo \"strawberries\" 8\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to strawberries and something else", - "test_code": "let\n Test.label.deprecated \"allergic to strawberries and something else\" <| Test.expect (allergicTo \"strawberries\" 28 === true)" + "test_code": "verify do\n labeled \"allergic to strawberries and something else\" do\n expected = true\n actual = allergicTo \"strawberries\" 28\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not strawberries", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not strawberries\" <| Test.expect (allergicTo \"strawberries\" 20 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not strawberries\" do\n expected = false\n actual = allergicTo \"strawberries\" 20\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"strawberries\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = true\n actual = allergicTo \"strawberries\" 255\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"tomatoes\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = false\n actual = allergicTo \"tomatoes\" 0\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to tomatoes", - "test_code": "let\n Test.label.deprecated \"allergic only to tomatoes\" <| Test.expect (allergicTo \"tomatoes\" 16 === true)" + "test_code": "verify do\n labeled \"allergic only to tomatoes\" do\n expected = true\n actual = allergicTo \"tomatoes\" 16\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to tomatoes and something else", - "test_code": "let\n Test.label.deprecated \"allergic to tomatoes and something else\" <| Test.expect (allergicTo \"tomatoes\" 56 === true)" + "test_code": "verify do\n labeled \"allergic to tomatoes and something else\" do\n expected = true\n actual = allergicTo \"tomatoes\" 56\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not tomatoes", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not tomatoes\" <| Test.expect (allergicTo \"tomatoes\" 40 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not tomatoes\" do\n expected = false\n actual = allergicTo \"tomatoes\" 40\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"tomatoes\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = true\n actual = allergicTo \"tomatoes\" 255\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"chocolate\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = allergicTo \"chocolate\" 0\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to chocolate", - "test_code": "let\n Test.label.deprecated \"allergic only to chocolate\" <| Test.expect (allergicTo \"chocolate\" 32 === true)" + "test_code": "verify do\n labeled \"allergic only to chocolate\" do\n expected = allergicTo \"chocolate\" 32\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to chocolate and something else", - "test_code": "let\n Test.label.deprecated \"allergic to chocolate and something else\" <| Test.expect (allergicTo \"chocolate\" 112 === true)" + "test_code": "verify do\n labeled \"allergic to chocolate and something else\" do\n expected = allergicTo \"chocolate\" 112\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not chocolate", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not chocolate\" <| Test.expect (allergicTo \"chocolate\" 80 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not chocolate\" do\n expected = allergicTo \"chocolate\" 80\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"chocolate\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = allergicTo \"chocolate\" 255\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"pollen\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = allergicTo \"pollen\" 0\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to pollen", - "test_code": "let\n Test.label.deprecated \"allergic only to pollen\" <| Test.expect (allergicTo \"pollen\" 64 === true)" + "test_code": "verify do\n labeled \"allergic only to pollen\" do\n expected = allergicTo \"pollen\" 64\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to pollen and something else", - "test_code": "let\n Test.label.deprecated \"allergic to pollen and something else\" <| Test.expect (allergicTo \"pollen\" 224 === true)" + "test_code": "verify do\n labeled \"allergic to pollen and something else\" do\n expected = allergicTo \"pollen\" 224\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not pollen", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not pollen\" <| Test.expect (allergicTo \"pollen\" 160 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not pollen\" do\n expected = allergicTo \"pollen\" 160\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"pollen\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = allergicTo \"pollen\" 255\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "not allergic to anything", - "test_code": "let\n Test.label.deprecated \"not allergic to anything\" <| Test.expect (allergicTo \"cats\" 0 === false)" + "test_code": "verify do\n labeled \"not allergic to anything\" do\n expected = allergicTo \"cats\" 0\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic only to cats", - "test_code": "let\n Test.label.deprecated \"allergic only to cats\" <| Test.expect (allergicTo \"cats\" 128 === true)" + "test_code": "verify do\n labeled \"allergic only to cats\" do\n expected = allergicTo \"cats\" 128\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to cats and something else", - "test_code": "let\n Test.label.deprecated \"allergic to cats and something else\" <| Test.expect (allergicTo \"cats\" 192 === true)" + "test_code": "verify do\n labeled \"allergic to cats and something else\" do\n expected = allergicTo \"cats\" 192\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to something, but not cats", - "test_code": "let\n Test.label.deprecated \"allergic to something, but not cats\" <| Test.expect (allergicTo \"cats\" 64 === false)" + "test_code": "verify do\n labeled \"allergic to something, but not cats\" do\n expected = allergicTo \"cats\" 64\n actual = false\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "allergic to everything", - "test_code": "let\n Test.label.deprecated \"allergic to everything\" <| Test.expect (allergicTo \"cats\" 255 === true)" + "test_code": "verify do\n labeled \"allergic to everything\" do\n expected = allergicTo \"cats\" 255\n actual = true\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "no allergies", - "test_code": "let\n Test.label.deprecated \"no allergies\" <| Test.expect (list 0 === [])" + "test_code": "verify do\n labeled \"no allergies\" do\n expected = list 0\n actual = []\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "just eggs", - "test_code": "let\n Test.label.deprecated \"just eggs\" <| Test.expect (list 1 === [\"eggs\"])" + "test_code": "verify do\n labeled \"just eggs\" do\n expected = list 1\n actual = [\"eggs\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "just peanuts", - "test_code": "let\n Test.label.deprecated \"just peanuts\" <| Test.expect (list 2 === [\"peanuts\"])" + "test_code": "verify do\n labeled \"just peanuts\" do\n expected = list 2\n actual = [\"peanuts\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "just strawberries", - "test_code": "let\n Test.label.deprecated \"just strawberries\" <| Test.expect (list 8 === [\"strawberries\"])" + "test_code": "verify do\n labeled \"just strawberries\" do\n expected = list 8\n actual = [\"strawberries\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "eggs and peanuts", - "test_code": "let\n Test.label.deprecated \"eggs and peanuts\" <| Test.expect (toSorted (list 3) === toSorted [\"eggs\",\"peanuts\"])" + "test_code": "verify do\n labeled \"eggs and peanuts\" do\n expected = toSorted (list 3)\n actual = toSorted [\"eggs\",\"peanuts\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "more than eggs but not peanuts", - "test_code": "let\n Test.label.deprecated \"more than eggs but not peanuts\" <| Test.expect (toSorted (list 5) === toSorted [\"eggs\",\"shellfish\"])" + "test_code": "verify do\n labeled \"more than eggs but not peanuts\" do\n expected = toSorted (list 5)\n actual = toSorted [\"eggs\",\"shellfish\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "lots of stuff", - "test_code": "let\n Test.label.deprecated \"lots of stuff\" <| Test.expect (toSorted (list 248) === toSorted [\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"])" + "test_code": "verify do\n labeled \"lots of stuff\" do\n expected = toSorted (list 248)\n actual = toSorted [\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "everything", - "test_code": "let\n Test.label.deprecated \"everything\" <| Test.expect (toSorted (list 255) === toSorted [\"eggs\",\"peanuts\",\"shellfish\",\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"])" + "test_code": "verify do\n labeled \"everything\" do\n expected = toSorted (list 255)\n actual = toSorted [\"eggs\",\"peanuts\",\"shellfish\",\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "no allergen score parts", - "test_code": "let\n Test.label.deprecated \"no allergen score parts\" <| Test.expect (toSorted (list 509) === toSorted [\"eggs\",\"shellfish\",\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"])" + "test_code": "verify do\n labeled \"no allergen score parts\" do\n expected = toSorted (list 509)\n actual = toSorted [\"eggs\",\"shellfish\",\"strawberries\",\"tomatoes\",\"chocolate\",\"pollen\",\"cats\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "no allergen score parts without highest valid score", - "test_code": "let\n Test.label.deprecated \"no allergen score parts without highest valid score\" <| Test.expect (list 257 === [\"eggs\"])" + "test_code": "verify do\n labeled \"no allergen score parts without highest valid score\" do\n expected = list 257\n actual = [\"eggs\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/allergies/allergies.test.u b/exercises/practice/allergies/allergies.test.u index fc8123e..2cf53d2 100644 --- a/exercises/practice/allergies/allergies.test.u +++ b/exercises/practice/allergies/allergies.test.u @@ -1,157 +1,407 @@ -allergies.toSorted : [a] -> [a] -allergies.toSorted xs = List.sortBy id xs - -allergies.test.ex1 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "eggs" 0 === false) - -allergies.test.ex2 = let - Test.label.deprecated "allergic only to eggs" <| Test.expect (allergicTo "eggs" 1 === true) - -allergies.test.ex3 = let - Test.label.deprecated "allergic to eggs and something else" <| Test.expect (allergicTo "eggs" 3 === true) - -allergies.test.ex4 = let - Test.label.deprecated "allergic to something, but not eggs" <| Test.expect (allergicTo "eggs" 2 === false) - -allergies.test.ex5 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "eggs" 255 === true) - -allergies.test.ex6 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "peanuts" 0 === false) - -allergies.test.ex7 = let - Test.label.deprecated "allergic only to peanuts" <| Test.expect (allergicTo "peanuts" 2 === true) - -allergies.test.ex8 = let - Test.label.deprecated "allergic to peanuts and something else" <| Test.expect (allergicTo "peanuts" 7 === true) - -allergies.test.ex9 = let - Test.label.deprecated "allergic to something, but not peanuts" <| Test.expect (allergicTo "peanuts" 5 === false) - -allergies.test.ex10 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "peanuts" 255 === true) - -allergies.test.ex11 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "shellfish" 0 === false) - -allergies.test.ex12 = let - Test.label.deprecated "allergic only to shellfish" <| Test.expect (allergicTo "shellfish" 4 === true) - -allergies.test.ex13 = let - Test.label.deprecated "allergic to shellfish and something else" <| Test.expect (allergicTo "shellfish" 14 === true) - -allergies.test.ex14 = let - Test.label.deprecated "allergic to something, but not shellfish" <| Test.expect (allergicTo "shellfish" 10 === false) - -allergies.test.ex15 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "shellfish" 255 === true) - -allergies.test.ex16 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "strawberries" 0 === false) - -allergies.test.ex17 = let - Test.label.deprecated "allergic only to strawberries" <| Test.expect (allergicTo "strawberries" 8 === true) - -allergies.test.ex18 = let - Test.label.deprecated "allergic to strawberries and something else" <| Test.expect (allergicTo "strawberries" 28 === true) - -allergies.test.ex19 = let - Test.label.deprecated "allergic to something, but not strawberries" <| Test.expect (allergicTo "strawberries" 20 === false) - -allergies.test.ex20 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "strawberries" 255 === true) - -allergies.test.ex21 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "tomatoes" 0 === false) - -allergies.test.ex22 = let - Test.label.deprecated "allergic only to tomatoes" <| Test.expect (allergicTo "tomatoes" 16 === true) - -allergies.test.ex23 = let - Test.label.deprecated "allergic to tomatoes and something else" <| Test.expect (allergicTo "tomatoes" 56 === true) - -allergies.test.ex24 = let - Test.label.deprecated "allergic to something, but not tomatoes" <| Test.expect (allergicTo "tomatoes" 40 === false) - -allergies.test.ex25 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "tomatoes" 255 === true) - -allergies.test.ex26 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "chocolate" 0 === false) - -allergies.test.ex27 = let - Test.label.deprecated "allergic only to chocolate" <| Test.expect (allergicTo "chocolate" 32 === true) - -allergies.test.ex28 = let - Test.label.deprecated "allergic to chocolate and something else" <| Test.expect (allergicTo "chocolate" 112 === true) - -allergies.test.ex29 = let - Test.label.deprecated "allergic to something, but not chocolate" <| Test.expect (allergicTo "chocolate" 80 === false) - -allergies.test.ex30 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "chocolate" 255 === true) - -allergies.test.ex31 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "pollen" 0 === false) - -allergies.test.ex32 = let - Test.label.deprecated "allergic only to pollen" <| Test.expect (allergicTo "pollen" 64 === true) - -allergies.test.ex33 = let - Test.label.deprecated "allergic to pollen and something else" <| Test.expect (allergicTo "pollen" 224 === true) - -allergies.test.ex34 = let - Test.label.deprecated "allergic to something, but not pollen" <| Test.expect (allergicTo "pollen" 160 === false) - -allergies.test.ex35 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "pollen" 255 === true) - -allergies.test.ex36 = let - Test.label.deprecated "not allergic to anything" <| Test.expect (allergicTo "cats" 0 === false) - -allergies.test.ex37 = let - Test.label.deprecated "allergic only to cats" <| Test.expect (allergicTo "cats" 128 === true) - -allergies.test.ex38 = let - Test.label.deprecated "allergic to cats and something else" <| Test.expect (allergicTo "cats" 192 === true) - -allergies.test.ex39 = let - Test.label.deprecated "allergic to something, but not cats" <| Test.expect (allergicTo "cats" 64 === false) - -allergies.test.ex40 = let - Test.label.deprecated "allergic to everything" <| Test.expect (allergicTo "cats" 255 === true) - -allergies.test.ex41 = let - Test.label.deprecated "no allergies" <| Test.expect (list 0 === []) - -allergies.test.ex42 = let - Test.label.deprecated "just eggs" <| Test.expect (list 1 === ["eggs"]) - -allergies.test.ex43 = let - Test.label.deprecated "just peanuts" <| Test.expect (list 2 === ["peanuts"]) - -allergies.test.ex44 = let - Test.label.deprecated "just strawberries" <| Test.expect (list 8 === ["strawberries"]) - -allergies.test.ex45 = let - Test.label.deprecated "eggs and peanuts" <| Test.expect (toSorted (list 3) === toSorted ["eggs","peanuts"]) - -allergies.test.ex46 = let - Test.label.deprecated "more than eggs but not peanuts" <| Test.expect (toSorted (list 5) === toSorted ["eggs","shellfish"]) - -allergies.test.ex47 = let - Test.label.deprecated "lots of stuff" <| Test.expect (toSorted (list 248) === toSorted ["strawberries","tomatoes","chocolate","pollen","cats"]) - -allergies.test.ex48 = let - Test.label.deprecated "everything" <| Test.expect (toSorted (list 255) === toSorted ["eggs","peanuts","shellfish","strawberries","tomatoes","chocolate","pollen","cats"]) - -allergies.test.ex49 = let - Test.label.deprecated "no allergen score parts" <| Test.expect (toSorted (list 509) === toSorted ["eggs","shellfish","strawberries","tomatoes","chocolate","pollen","cats"]) - -allergies.test.ex50 = let - Test.label.deprecated "no allergen score parts without highest valid score" <| Test.expect (list 257 === ["eggs"]) - -test> allergies.tests = runAll [ +allergies.helpers.toSorted : [a] -> [a] +allergies.helpers.toSorted xs = List.sortBy id xs + +allergies.test.ex1 = verify do + labeled "not allergic to anything" do + expected = false + actual = allergicTo "eggs" 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex2 = verify do + labeled "allergic only to eggs" do + expected = true + actual = allergicTo "eggs" 1 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex3 = verify do + labeled "allergic to eggs and something else" do + expected = true + actual = allergicTo "eggs" 3 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex4 = verify do + labeled "allergic to something, but not eggs" do + expected = false + actual = allergicTo "eggs" 2 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex5 = verify do + labeled "allergic to everything" do + expected = true + actual = allergicTo "eggs" 255 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex6 = verify do + labeled "not allergic to anything" do + expected = false + actual = allergicTo "peanuts" 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex7 = verify do + labeled "allergic only to peanuts" do + expected = true + actual = allergicTo "peanuts" 2 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex8 = verify do + labeled "allergic to peanuts and something else" do + expected = true + actual = allergicTo "peanuts" 7 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex9 = verify do + labeled "allergic to something, but not peanuts" do + expected = false + actual = allergicTo "peanuts" 5 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex10 = verify do + labeled "allergic to everything" do + expected = true + actual = allergicTo "peanuts" 255 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex11 = verify do + labeled "not allergic to anything" do + expected = false + actual = allergicTo "shellfish" 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex12 = verify do + labeled "allergic only to shellfish" do + expected = true + actual = allergicTo "shellfish" 4 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex13 = verify do + labeled "allergic to shellfish and something else" do + expected = true + actual = allergicTo "shellfish" 14 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex14 = verify do + labeled "allergic to something, but not shellfish" do + expected = false + actual = allergicTo "shellfish" 10 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex15 = verify do + labeled "allergic to everything" do + expected = true + actual = allergicTo "shellfish" 255 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex16 = verify do + labeled "not allergic to anything" do + expected = false + actual = allergicTo "strawberries" 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex17 = verify do + labeled "allergic only to strawberries" do + expected = true + actual = allergicTo "strawberries" 8 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex18 = verify do + labeled "allergic to strawberries and something else" do + expected = true + actual = allergicTo "strawberries" 28 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex19 = verify do + labeled "allergic to something, but not strawberries" do + expected = false + actual = allergicTo "strawberries" 20 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex20 = verify do + labeled "allergic to everything" do + expected = true + actual = allergicTo "strawberries" 255 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex21 = verify do + labeled "not allergic to anything" do + expected = false + actual = allergicTo "tomatoes" 0 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex22 = verify do + labeled "allergic only to tomatoes" do + expected = true + actual = allergicTo "tomatoes" 16 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex23 = verify do + labeled "allergic to tomatoes and something else" do + expected = true + actual = allergicTo "tomatoes" 56 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex24 = verify do + labeled "allergic to something, but not tomatoes" do + expected = false + actual = allergicTo "tomatoes" 40 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex25 = verify do + labeled "allergic to everything" do + expected = true + actual = allergicTo "tomatoes" 255 + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex26 = verify do + labeled "not allergic to anything" do + expected = allergicTo "chocolate" 0 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex27 = verify do + labeled "allergic only to chocolate" do + expected = allergicTo "chocolate" 32 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex28 = verify do + labeled "allergic to chocolate and something else" do + expected = allergicTo "chocolate" 112 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex29 = verify do + labeled "allergic to something, but not chocolate" do + expected = allergicTo "chocolate" 80 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex30 = verify do + labeled "allergic to everything" do + expected = allergicTo "chocolate" 255 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex31 = verify do + labeled "not allergic to anything" do + expected = allergicTo "pollen" 0 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex32 = verify do + labeled "allergic only to pollen" do + expected = allergicTo "pollen" 64 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex33 = verify do + labeled "allergic to pollen and something else" do + expected = allergicTo "pollen" 224 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex34 = verify do + labeled "allergic to something, but not pollen" do + expected = allergicTo "pollen" 160 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex35 = verify do + labeled "allergic to everything" do + expected = allergicTo "pollen" 255 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex36 = verify do + labeled "not allergic to anything" do + expected = allergicTo "cats" 0 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex37 = verify do + labeled "allergic only to cats" do + expected = allergicTo "cats" 128 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex38 = verify do + labeled "allergic to cats and something else" do + expected = allergicTo "cats" 192 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex39 = verify do + labeled "allergic to something, but not cats" do + expected = allergicTo "cats" 64 + actual = false + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex40 = verify do + labeled "allergic to everything" do + expected = allergicTo "cats" 255 + actual = true + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex41 = verify do + labeled "no allergies" do + expected = list 0 + actual = [] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex42 = verify do + labeled "just eggs" do + expected = list 1 + actual = ["eggs"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex43 = verify do + labeled "just peanuts" do + expected = list 2 + actual = ["peanuts"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex44 = verify do + labeled "just strawberries" do + expected = list 8 + actual = ["strawberries"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex45 = verify do + labeled "eggs and peanuts" do + expected = toSorted (list 3) + actual = toSorted ["eggs","peanuts"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex46 = verify do + labeled "more than eggs but not peanuts" do + expected = toSorted (list 5) + actual = toSorted ["eggs","shellfish"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex47 = verify do + labeled "lots of stuff" do + expected = toSorted (list 248) + actual = toSorted ["strawberries","tomatoes","chocolate","pollen","cats"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex48 = verify do + labeled "everything" do + expected = toSorted (list 255) + actual = toSorted ["eggs","peanuts","shellfish","strawberries","tomatoes","chocolate","pollen","cats"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex49 = verify do + labeled "no allergen score parts" do + expected = toSorted (list 509) + actual = toSorted ["eggs","shellfish","strawberries","tomatoes","chocolate","pollen","cats"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +allergies.test.ex50 = verify do + labeled "no allergen score parts without highest valid score" do + expected = list 257 + actual = ["eggs"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +test> allergies.tests = join [ allergies.test.ex1, allergies.test.ex2, allergies.test.ex3, From e368b57ccf4e74ef1a0e40a616e273477c08ea7b Mon Sep 17 00:00:00 2001 From: SimaDovakin Date: Sat, 18 Jan 2025 19:03:59 +0200 Subject: [PATCH 2/2] Upgraded tests for anagram exercise. --- .../anagram/.meta/testAnnotation.json | 34 +-- exercises/practice/anagram/anagram.test.u | 209 +++++++++++------- 2 files changed, 146 insertions(+), 97 deletions(-) diff --git a/exercises/practice/anagram/.meta/testAnnotation.json b/exercises/practice/anagram/.meta/testAnnotation.json index f213cf0..90681de 100644 --- a/exercises/practice/anagram/.meta/testAnnotation.json +++ b/exercises/practice/anagram/.meta/testAnnotation.json @@ -1,66 +1,66 @@ [ { "name": "no matches", - "test_code": "let\n actual = findAnagrams \"diaper\" [\"hello\", \"world\", \"zombies\", \"pants\"]\n Test.label.deprecated \"no matches\" <| Test.expect (actual === [])" + "test_code": "verify do\n labeled \"no matches\" do\n expected = []\n actual = findAnagrams \"diaper\" [\"hello\", \"world\", \"zombies\", \"pants\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects two anagrams", - "test_code": "let\n actual = findAnagrams \"solemn\" [\"lemons\",\"cherry\",\"melons\"]\n expected = [\"lemons\",\"melons\"]\n Test.label.deprecated \"detects two anagrams\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects two anagrams\" do\n expected = [\"lemons\",\"melons\"]\n actual = findAnagrams \"solemn\" [\"lemons\",\"cherry\",\"melons\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "does not detect anagram subsets", - "test_code": "let\n actual = findAnagrams \"good\" [\"dog\",\"goody\"]\n expected = []\n Test.label.deprecated \"does not detect anagram subsets\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"does not detect anagram subsets\" do\n expected = []\n actual = findAnagrams \"good\" [\"dog\",\"goody\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects anagram", - "test_code": "let\n actual = findAnagrams \"listen\" [\"enlists\",\"google\",\"inlets\",\"banana\"]\n expected = [\"inlets\"]\n Test.label.deprecated \"detects anagram\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects anagram\" do\n expected = [\"inlets\"]\n actual = findAnagrams \"listen\" [\"enlists\",\"google\",\"inlets\",\"banana\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects three anagrams", - "test_code": "let\n actual = findAnagrams \"allergy\" [\"gallery\",\"ballerina\",\"regally\",\"clergy\",\"largely\",\"leading\"]\n expected = [\"gallery\",\"regally\",\"largely\"]\n Test.label.deprecated \"detects three anagrams\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects three anagrams\" do\n expected = [\"gallery\",\"regally\",\"largely\"]\n actual = findAnagrams \"allergy\" [\"gallery\",\"ballerina\",\"regally\",\"clergy\",\"largely\",\"leading\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects multiple anagrams with different case", - "test_code": "let\n actual = findAnagrams \"nose\" [\"Eons\",\"ONES\"]\n expected = [\"Eons\",\"ONES\"]\n Test.label.deprecated \"detects multiple anagrams with different case\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects multiple anagrams with different case\" do\n expected = [\"Eons\",\"ONES\"]\n actual = findAnagrams \"nose\" [\"Eons\",\"ONES\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "does not detect non-anagrams with identical checksum", - "test_code": "let\n actual = findAnagrams \"mass\" [\"last\"]\n expected = []\n Test.label.deprecated \"does not detect non-anagrams with identical checksum\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"does not detect non-anagrams with identical checksum\" do\n expected = []\n actual = findAnagrams \"mass\" [\"last\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects anagrams case-insensitively", - "test_code": "let\n actual = findAnagrams \"Orchestra\" [\"cashregister\",\"Carthorse\",\"radishes\"]\n expected = [\"Carthorse\"]\n Test.label.deprecated \"detects anagrams case-insensitively\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects anagrams case-insensitively\" do\n expected = [\"Carthorse\"]\n actual = findAnagrams \"Orchestra\" [\"cashregister\",\"Carthorse\",\"radishes\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects anagrams using case-insensitive subject", - "test_code": "let\n actual = findAnagrams \"Orchestra\" [\"cashregister\",\"carthorse\",\"radishes\"]\n expected = [\"carthorse\"]\n Test.label.deprecated \"detects anagrams using case-insensitive subject\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects anagrams using case-insensitive subject\" do\n expected = [\"carthorse\"]\n actual = findAnagrams \"Orchestra\" [\"cashregister\",\"carthorse\",\"radishes\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "detects anagrams using case-insensitive possible matches", - "test_code": "let\n actual = findAnagrams \"orchestra\" [\"cashregister\",\"Carthorse\",\"radishes\"]\n expected = [\"Carthorse\"]\n Test.label.deprecated \"detects anagrams using case-insensitive possible matches\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"detects anagrams using case-insensitive possible matches\" do\n expected = [\"Carthorse\"]\n actual = findAnagrams \"orchestra\" [\"cashregister\",\"Carthorse\",\"radishes\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "does not detect an anagram if the original word is repeated", - "test_code": "let\n actual = findAnagrams \"go\" [\"go Go GO\"]\n expected = []\n Test.label.deprecated \"does not detect an anagram if the original word is repeated\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"does not detect an anagram if the original word is repeated\" do\n expected = []\n actual = findAnagrams \"go\" [\"go Go GO\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "anagrams must use all letters exactly once", - "test_code": "let\n actual = findAnagrams \"tapper\" [\"patter\"]\n expected = []\n Test.label.deprecated \"anagrams must use all letters exactly once\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"anagrams must use all letters exactly once\" do\n expected = []\n actual = findAnagrams \"tapper\" [\"patter\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "words are not anagrams of themselves", - "test_code": "let\n actual = findAnagrams \"BANANA\" [\"BANANA\"]\n expected = []\n Test.label.deprecated \"words are not anagrams of themselves\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"words are not anagrams of themselves\" do\n expected = []\n actual = findAnagrams \"BANANA\" [\"BANANA\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "words are not anagrams of themselves even if letter case is partially different", - "test_code": "let\n actual = findAnagrams \"BANANA\" [\"Banana\"]\n expected = []\n Test.label.deprecated \"words are not anagrams of themselves even if letter case is partially different\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"words are not anagrams of themselves even if letter case is partially different\" do\n expected = []\n actual = findAnagrams \"BANANA\" [\"Banana\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "words are not anagrams of themselves even if letter case is completely different", - "test_code": "let\n actual = findAnagrams \"BANANA\" [\"banana\"]\n expected = []\n Test.label.deprecated \"words are not anagrams of themselves even if letter case is completely different\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"words are not anagrams of themselves even if letter case is completely different\" do\n expected = []\n actual = findAnagrams \"BANANA\" [\"banana\"]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" }, { "name": "words other than themselves can be anagrams", - "test_code": "let\n actual = findAnagrams \"LISTEN\" [\"LISTEN\",\"Silent\" ]\n expected = [\"Silent\"]\n Test.label.deprecated \"words other than themselves can be anagrams\" <| Test.expect (actual === expected)" + "test_code": "verify do\n labeled \"words other than themselves can be anagrams\" do\n expected = [\"Silent\"]\n actual = findAnagrams \"LISTEN\" [\"LISTEN\",\"Silent\" ]\n label \"expected\" expected\n label \"actual\" actual\n ensureEqual expected actual" } -] \ No newline at end of file +] diff --git a/exercises/practice/anagram/anagram.test.u b/exercises/practice/anagram/anagram.test.u index 182153b..537212c 100644 --- a/exercises/practice/anagram/anagram.test.u +++ b/exercises/practice/anagram/anagram.test.u @@ -1,83 +1,132 @@ -anagram.findAnagrams.tests.ex1 = let - actual = findAnagrams "diaper" ["hello", "world", "zombies", "pants"] - Test.label.deprecated "no matches" <| Test.expect (actual === []) - -anagram.findAnagrams.tests.ex2 = let - actual = findAnagrams "solemn" ["lemons","cherry","melons"] - expected = ["lemons","melons"] - Test.label.deprecated "detects two anagrams" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex3 = let - actual = findAnagrams "good" ["dog","goody"] - expected = [] - Test.label.deprecated "does not detect anagram subsets" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex4 = let - actual = findAnagrams "listen" ["enlists","google","inlets","banana"] - expected = ["inlets"] - Test.label.deprecated "detects anagram" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex5 = let - actual = findAnagrams "allergy" ["gallery","ballerina","regally","clergy","largely","leading"] - expected = ["gallery","regally","largely"] - Test.label.deprecated "detects three anagrams" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex6 = let - actual = findAnagrams "nose" ["Eons","ONES"] - expected = ["Eons","ONES"] - Test.label.deprecated "detects multiple anagrams with different case" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex7 = let - actual = findAnagrams "mass" ["last"] - expected = [] - Test.label.deprecated "does not detect non-anagrams with identical checksum" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex8 = let - actual = findAnagrams "Orchestra" ["cashregister","Carthorse","radishes"] - expected = ["Carthorse"] - Test.label.deprecated "detects anagrams case-insensitively" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex9 = let - actual = findAnagrams "Orchestra" ["cashregister","carthorse","radishes"] - expected = ["carthorse"] - Test.label.deprecated "detects anagrams using case-insensitive subject" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex10 = let - actual = findAnagrams "orchestra" ["cashregister","Carthorse","radishes"] - expected = ["Carthorse"] - Test.label.deprecated "detects anagrams using case-insensitive possible matches" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex11 = let - actual = findAnagrams "go" ["go Go GO"] - expected = [] - Test.label.deprecated "does not detect an anagram if the original word is repeated" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex12 = let - actual = findAnagrams "tapper" ["patter"] - expected = [] - Test.label.deprecated "anagrams must use all letters exactly once" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex13 = let - actual = findAnagrams "BANANA" ["BANANA"] - expected = [] - Test.label.deprecated "words are not anagrams of themselves" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex14 = let - actual = findAnagrams "BANANA" ["Banana"] - expected = [] - Test.label.deprecated "words are not anagrams of themselves even if letter case is partially different" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex15 = let - actual = findAnagrams "BANANA" ["banana"] - expected = [] - Test.label.deprecated "words are not anagrams of themselves even if letter case is completely different" <| Test.expect (actual === expected) - -anagram.findAnagrams.tests.ex16 = let - actual = findAnagrams "LISTEN" ["LISTEN","Silent" ] - expected = ["Silent"] - Test.label.deprecated "words other than themselves can be anagrams" <| Test.expect (actual === expected) - -test> anagram.tests = runAll [ +anagram.findAnagrams.tests.ex1 = verify do + labeled "no matches" do + expected = [] + actual = findAnagrams "diaper" ["hello", "world", "zombies", "pants"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex2 = verify do + labeled "detects two anagrams" do + expected = ["lemons","melons"] + actual = findAnagrams "solemn" ["lemons","cherry","melons"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex3 = verify do + labeled "does not detect anagram subsets" do + expected = [] + actual = findAnagrams "good" ["dog","goody"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex4 = verify do + labeled "detects anagram" do + expected = ["inlets"] + actual = findAnagrams "listen" ["enlists","google","inlets","banana"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex5 = verify do + labeled "detects three anagrams" do + expected = ["gallery","regally","largely"] + actual = findAnagrams "allergy" ["gallery","ballerina","regally","clergy","largely","leading"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex6 = verify do + labeled "detects multiple anagrams with different case" do + expected = ["Eons","ONES"] + actual = findAnagrams "nose" ["Eons","ONES"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex7 = verify do + labeled "does not detect non-anagrams with identical checksum" do + expected = [] + actual = findAnagrams "mass" ["last"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex8 = verify do + labeled "detects anagrams case-insensitively" do + expected = ["Carthorse"] + actual = findAnagrams "Orchestra" ["cashregister","Carthorse","radishes"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex9 = verify do + labeled "detects anagrams using case-insensitive subject" do + expected = ["carthorse"] + actual = findAnagrams "Orchestra" ["cashregister","carthorse","radishes"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex10 = verify do + labeled "detects anagrams using case-insensitive possible matches" do + expected = ["Carthorse"] + actual = findAnagrams "orchestra" ["cashregister","Carthorse","radishes"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex11 = verify do + labeled "does not detect an anagram if the original word is repeated" do + expected = [] + actual = findAnagrams "go" ["go Go GO"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex12 = verify do + labeled "anagrams must use all letters exactly once" do + expected = [] + actual = findAnagrams "tapper" ["patter"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex13 = verify do + labeled "words are not anagrams of themselves" do + expected = [] + actual = findAnagrams "BANANA" ["BANANA"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex14 = verify do + labeled "words are not anagrams of themselves even if letter case is partially different" do + expected = [] + actual = findAnagrams "BANANA" ["Banana"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex15 = verify do + labeled "words are not anagrams of themselves even if letter case is completely different" do + expected = [] + actual = findAnagrams "BANANA" ["banana"] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +anagram.findAnagrams.tests.ex16 = verify do + labeled "words other than themselves can be anagrams" do + expected = ["Silent"] + actual = findAnagrams "LISTEN" ["LISTEN","Silent" ] + label "expected" expected + label "actual" actual + ensureEqual expected actual + +test> anagram.tests = join [ anagram.findAnagrams.tests.ex1, anagram.findAnagrams.tests.ex2, anagram.findAnagrams.tests.ex3,