From 6547c124eca886b9fa0c08310dfd6c868f9fc6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:17:58 -0800 Subject: [PATCH 1/4] Update pangram tests --- exercises/practice/pangram/.meta/tests.toml | 5 ++++ exercises/practice/pangram/pangram.vader | 33 ++++++++++----------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/exercises/practice/pangram/.meta/tests.toml b/exercises/practice/pangram/.meta/tests.toml index 7c35818..10b5a33 100644 --- a/exercises/practice/pangram/.meta/tests.toml +++ b/exercises/practice/pangram/.meta/tests.toml @@ -38,3 +38,8 @@ description = "mixed case and punctuation" [2577bf54-83c8-402d-a64b-a2c0f7bb213a] description = "case insensitive" +include = false + +[7138e389-83e4-4c6e-8413-1e40a0076951] +description = "a-m and A-M are 26 different characters but not a pangram" +reimplements = "2577bf54-83c8-402d-a64b-a2c0f7bb213a" diff --git a/exercises/practice/pangram/pangram.vader b/exercises/practice/pangram/pangram.vader index 83c0be8..b9f6b26 100644 --- a/exercises/practice/pangram/pangram.vader +++ b/exercises/practice/pangram/pangram.vader @@ -1,36 +1,34 @@ -" -" Version: 1.1.0 -" - -Before: - unlet! input expected - -Execute (sentence empty): +Execute (empty sentence): let input = "" let expected = 0 AssertEqual expected, IsPangram(input) -Execute (pangram with only lower case): +Execute (perfect lower case): + let input = "abcdefghijklmnopqrstuvwxyz" + let expected = 1 + AssertEqual expected, IsPangram(input) + +Execute (only lower case): let input = "the quick brown fox jumps over the lazy dog" let expected = 1 AssertEqual expected, IsPangram(input) -Execute (missing character 'x'): +Execute (missing the letter 'x'): let input = "a quick movement of the enemy will jeopardize five gunboats" let expected = 0 AssertEqual expected, IsPangram(input) -Execute (another missing character 'x'): - let input = "the quick brown fish jumps over the lazy dog" +Execute (missing the letter 'h'): + let input = "five boxing wizards jump quickly at it" let expected = 0 AssertEqual expected, IsPangram(input) -Execute (pangram with underscores): +Execute (with underscores): let input = "the_quick_brown_fox_jumps_over_the_lazy_dog" let expected = 1 AssertEqual expected, IsPangram(input) -Execute (pangram with numbers): +Execute (with numbers): let input = "the 1 quick brown fox jumps over the 2 lazy dogs" let expected = 1 AssertEqual expected, IsPangram(input) @@ -40,13 +38,12 @@ Execute (missing letters replaced by numbers): let expected = 0 AssertEqual expected, IsPangram(input) -Execute (pangram with mixed case and punctuation): +Execute (mixed case and punctuation): let input = "\"Five quacking Zephyrs jolt my wax bed.\"" let expected = 1 AssertEqual expected, IsPangram(input) -Execute (upper and lower case versions of the same character should not be counted separately): - let input = "the quick brown fox jumps over with lazy FX" +Execute (a-m and A-M are 26 different characters but not a pangram): + let input = "abcdefghijklm ABCDEFGHIJKLM" let expected = 0 AssertEqual expected, IsPangram(input) - From 561ee1ba8451110706d074e10dc788418bb765ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:18:13 -0800 Subject: [PATCH 2/4] Update roman-numeral tests --- .../practice/roman-numerals/.meta/tests.toml | 21 +++++++ .../roman-numerals/roman_numerals.vader | 60 +++++++++++++------ 2 files changed, 63 insertions(+), 18 deletions(-) diff --git a/exercises/practice/roman-numerals/.meta/tests.toml b/exercises/practice/roman-numerals/.meta/tests.toml index 630a42c..57c6c4b 100644 --- a/exercises/practice/roman-numerals/.meta/tests.toml +++ b/exercises/practice/roman-numerals/.meta/tests.toml @@ -30,6 +30,9 @@ description = "6 is VI" [ff3fb08c-4917-4aab-9f4e-d663491d083d] description = "9 is IX" +[6d1d82d5-bf3e-48af-9139-87d7165ed509] +description = "16 is XVI" + [2bda64ca-7d28-4c56-b08d-16ce65716cf6] description = "27 is XXVII" @@ -42,6 +45,9 @@ description = "49 is XLIX" [d5b283d4-455d-4e68-aacf-add6c4b51915] description = "59 is LIX" +[4465ffd5-34dc-44f3-ada5-56f5007b6dad] +description = "66 is LXVI" + [46b46e5b-24da-4180-bfe2-2ef30b39d0d0] description = "93 is XCIII" @@ -51,17 +57,32 @@ description = "141 is CXLI" [267f0207-3c55-459a-b81d-67cec7a46ed9] description = "163 is CLXIII" +[902ad132-0b4d-40e3-8597-ba5ed611dd8d] +description = "166 is CLXVI" + [cdb06885-4485-4d71-8bfb-c9d0f496b404] description = "402 is CDII" [6b71841d-13b2-46b4-ba97-dec28133ea80] description = "575 is DLXXV" +[dacb84b9-ea1c-4a61-acbb-ce6b36674906] +description = "666 is DCLXVI" + [432de891-7fd6-4748-a7f6-156082eeca2f] description = "911 is CMXI" [e6de6d24-f668-41c0-88d7-889c0254d173] description = "1024 is MXXIV" +[efbe1d6a-9f98-4eb5-82bc-72753e3ac328] +description = "1666 is MDCLXVI" + [bb550038-d4eb-4be2-a9ce-f21961ac3bc6] description = "3000 is MMM" + +[3bc4b41c-c2e6-49d9-9142-420691504336] +description = "3001 is MMMI" + +[4e18e96b-5fbb-43df-a91b-9cb511fe0856] +description = "3999 is MMMCMXCIX" diff --git a/exercises/practice/roman-numerals/roman_numerals.vader b/exercises/practice/roman-numerals/roman_numerals.vader index ce68646..df817a8 100644 --- a/exercises/practice/roman-numerals/roman_numerals.vader +++ b/exercises/practice/roman-numerals/roman_numerals.vader @@ -1,53 +1,77 @@ -Execute (1 is a single I): +Execute (1 is I): AssertEqual 'I', ToRoman(1) -Execute (2 is two I's): +Execute (2 is II): AssertEqual 'II', ToRoman(2) -Execute (2 is three I's): +Execute (3 is III): AssertEqual 'III', ToRoman(3) -Execute (4, being 5 - 1, is IV): +Execute (4 is IV): AssertEqual 'IV', ToRoman(4) -Execute (5 is a single V): +Execute (5 is V): AssertEqual 'V', ToRoman(5) -Execute (6, being 5 + 1, is VI): +Execute (6 is VI): AssertEqual 'VI', ToRoman(6) -Execute (9, being 10 - 1, is IX): +Execute (9 is IX): AssertEqual 'IX', ToRoman(9) -Execute (20 is two X's): +Execute (16 is XVI): + AssertEqual 'XVI', ToRoman(16) + +Execute (27 is XXVII): AssertEqual 'XXVII', ToRoman(27) -Execute (48 is not 50 - 2, but rather 40 + 8): +Execute (48 is XLVIII): AssertEqual 'XLVIII', ToRoman(48) -Execute (50 is a single L): +Execute (49 is XLIX): + AssertEqual 'XLIX', ToRoman(49) + +Execute (59 is LIX): AssertEqual 'LIX', ToRoman(59) -Execute (90, being 100 - 10, is XC): +Execute (69 is LXVI): + AssertEqual 'LXVI', ToRoman(69) + +Execute (93 is XCIII): AssertEqual 'XCIII', ToRoman(93) -Execute (100 is a single C): +Execute (141 is CXLI): AssertEqual 'CXLI', ToRoman(141) -Execute (60, being 50 + 10, is LX): +Execute (163 is CLXIII): AssertEqual 'CLXIII', ToRoman(163) -Execute (400, being 500 - 100, is CD): +Execute (166 is CLXVI): + AssertEqual 'CLXVI', ToRoman(166) + +Execute (402 is CDII): AssertEqual 'CDII', ToRoman(402) -Execute (500 is a single D): +Execute (575 is DLXXV): AssertEqual 'DLXXV', ToRoman(575) -Execute (900, being 1000 - 100, is CM): +Execute (666 is DCLXVI): + AssertEqual 'DCLXVI', ToRoman(666) + +Execute (911 is CMXI): AssertEqual 'CMXI', ToRoman(911) -Execute (1000 is a single M): +Execute (1024 is MXXIV): AssertEqual 'MXXIV', ToRoman(1024) -Execute (3000 is three M's): +Execute (1666 is MDCLXVI): + AssertEqual 'MDCLXVI', ToRoman(1666) + +Execute (3000 is MMM): AssertEqual 'MMM', ToRoman(3000) + +Execute (3001 is MMMI): + AssertEqual 'MMMI', ToRoman(3001) + +Execute (3999 is MMMCMXCIX): + AssertEqual 'MMMCMXCIX', ToRoman(3999) From f84374f3928f8833ec8798b1f356c3357087d90c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:18:25 -0800 Subject: [PATCH 3/4] Update triangle tests --- exercises/practice/triangle/.meta/tests.toml | 8 +- exercises/practice/triangle/triangle.vader | 201 ++++++++++--------- 2 files changed, 117 insertions(+), 92 deletions(-) diff --git a/exercises/practice/triangle/.meta/tests.toml b/exercises/practice/triangle/.meta/tests.toml index b4f4175..7db0916 100644 --- a/exercises/practice/triangle/.meta/tests.toml +++ b/exercises/practice/triangle/.meta/tests.toml @@ -58,7 +58,13 @@ description = "scalene triangle -> no sides are equal" description = "scalene triangle -> all sides are equal" [c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e] -description = "scalene triangle -> two sides are equal" +description = "scalene triangle -> first and second sides are equal" + +[3da23a91-a166-419a-9abf-baf4868fd985] +description = "scalene triangle -> first and third sides are equal" + +[b6a75d98-1fef-4c42-8e9a-9db854ba0a4d] +description = "scalene triangle -> second and third sides are equal" [70ad5154-0033-48b7-af2c-b8d739cd9fdc] description = "scalene triangle -> may not violate triangle inequality" diff --git a/exercises/practice/triangle/triangle.vader b/exercises/practice/triangle/triangle.vader index 07ad7e7..b5dc121 100644 --- a/exercises/practice/triangle/triangle.vader +++ b/exercises/practice/triangle/triangle.vader @@ -1,92 +1,111 @@ -" -" Version: 1.0.0 -" - -Before: - unlet! input expected - -Execute (true if all sides are equal): - let input = [2, 2, 2] - let expected = 1 - AssertEqual expected, Equilateral(input) - -Execute (false if any side is unequal): - let input = [2, 3, 2] - let expected = 0 - AssertEqual expected, Equilateral(input) - -Execute (false if no sides are equal): - let input = [5, 4, 6] - let expected = 0 - AssertEqual expected, Equilateral(input) - -Execute (All zero sides are illegal, so the triangle is not equilateral): - let input = [0, 0, 0] - let expected = 0 - AssertEqual expected, Equilateral(input) - -Execute (sides may be floats): - let input = [0.5, 0.5, 0.5] - let expected = 1 - AssertEqual expected, Equilateral(input) - -Execute (true if last two sides are equal): - let input = [3, 4, 4] - let expected = 1 - AssertEqual expected, Isosceles(input) - -Execute (true if first two sides are equal): - let input = [4, 4, 3] - let expected = 1 - AssertEqual expected, Isosceles(input) - -Execute (true if first and last sides are equal): - let input = [4, 3, 4] - let expected = 1 - AssertEqual expected, Isosceles(input) - -Execute (equilateral triangles are also isosceles): - let input = [4, 4, 4] - let expected = 1 - AssertEqual expected, Isosceles(input) - -Execute (false if no sides are equal): - let input = [2, 3, 4] - let expected = 0 - AssertEqual expected, Isosceles(input) - -Execute (Sides that violate triangle inequality are not isosceles, even if two are equal): - let input = [1, 1, 3] - let expected = 0 - AssertEqual expected, Isosceles(input) - -Execute (sides may be floats): - let input = [0.5, 0.4, 0.5] - let expected = 1 - AssertEqual expected, Isosceles(input) - -Execute (true if no sides are equal): - let input = [5, 4, 6] - let expected = 1 - AssertEqual expected, Scalene(input) - -Execute (false if all sides are equal): - let input = [4, 4, 4] - let expected = 0 - AssertEqual expected, Scalene(input) - -Execute (false if two sides are equal): - let input = [4, 4, 3] - let expected = 0 - AssertEqual expected, Scalene(input) - -Execute (Sides that violate triangle inequality are not scalene, even if they are all different): - let input = [7, 3, 2] - let expected = 0 - AssertEqual expected, Scalene(input) - -Execute (sides may be floats): - let input = [0.5, 0.4, 0.6] - let expected = 1 - AssertEqual expected, Scalene(input) +" Equilateral test cases + +Execute (equilateral - all sides are equal): + let g:input = [2, 2, 2] + let g:expected = 1 + AssertEqual g:expected, Equilateral(g:input) + +Execute (equilateral - any side is unequal): + let g:input = [2, 3, 2] + let g:expected = 0 + AssertEqual g:expected, Equilateral(g:input) + +Execute (equilateral - no sides are equal): + let g:input = [5, 4, 6] + let g:expected = 0 + AssertEqual g:expected, Equilateral(g:input) + +Execute (equilateral - all zero sides is not a triangle): + let g:input = [0, 0, 0] + let g:expected = 0 + AssertEqual g:expected, Equilateral(g:input) + +Execute (equilateal - sides may be floats): + let g:input = [0.5, 0.5, 0.5] + let g:expected = 1 + AssertEqual g:expected, Equilateral(g:input) + +" Isosceles test cases + +Execute (isosceles - last two sides are equal): + let g:input = [3, 4, 4] + let g:expected = 1 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - first two sides are equal): + let g:input = [4, 4, 3] + let g:expected = 1 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - first and last sides are equal): + let g:input = [4, 3, 4] + let g:expected = 1 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - equilateral triangles are also isosceles): + let g:input = [4, 4, 4] + let g:expected = 1 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - no sides are equal): + let g:input = [2, 3, 4] + let g:expected = 0 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - first triangle inequality violation): + let g:input = [1, 1, 3] + let g:expected = 0 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - second triangle inequality violation): + let g:input = [1, 3, 1] + let g:expected = 0 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - third triangle inequality violation): + let g:input = [3, 1, 1] + let g:expected = 0 + AssertEqual g:expected, Isosceles(g:input) + +Execute (isosceles - sides may be floats): + let g:input = [0.5, 0.4, 0.5] + let g:expected = 1 + AssertEqual g:expected, Isosceles(g:input) + +" Scalene test cases + +Execute (scalene - no sides are equal): + let g:input = [5, 4, 6] + let g:expected = 1 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - all sides are equal): + let g:input = [4, 4, 4] + let g:expected = 0 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - first and second sides are equal): + let g:input = [4, 4, 3] + let g:expected = 0 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - first and third sides are equal): + let g:input = [3, 4, 3] + let g:expected = 0 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - second and third sides are equal): + let g:input = [4, 3, 3] + let g:expected = 0 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - may not violate triangle inequality): + let g:input = [7, 3, 2] + let g:expected = 0 + AssertEqual g:expected, Scalene(g:input) + +Execute (scalene - sides may be floats): + let g:input = [0.5, 0.4, 0.6] + let g:expected = 1 + AssertEqual g:expected, Scalene(g:input) From aefeaf0d2acaf4e11db86109d5330a4b6fb9416c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:24:47 -0800 Subject: [PATCH 4/4] Fix incorrect test in roman-numerals test --- exercises/practice/roman-numerals/roman_numerals.vader | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/practice/roman-numerals/roman_numerals.vader b/exercises/practice/roman-numerals/roman_numerals.vader index df817a8..3574ffe 100644 --- a/exercises/practice/roman-numerals/roman_numerals.vader +++ b/exercises/practice/roman-numerals/roman_numerals.vader @@ -34,8 +34,8 @@ Execute (49 is XLIX): Execute (59 is LIX): AssertEqual 'LIX', ToRoman(59) -Execute (69 is LXVI): - AssertEqual 'LXVI', ToRoman(69) +Execute (66 is LXVI): + AssertEqual 'LXVI', ToRoman(66) Execute (93 is XCIII): AssertEqual 'XCIII', ToRoman(93)