From a3ff9d8fc37908daa0d86cd0df238a091d367b96 Mon Sep 17 00:00:00 2001 From: DebbieSan Date: Sat, 27 Jan 2024 19:47:13 -0800 Subject: [PATCH 1/5] update triangle tests --- exercises/practice/triangle/.meta/tests.toml | 57 ++++++++++++-------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/exercises/practice/triangle/.meta/tests.toml b/exercises/practice/triangle/.meta/tests.toml index 59107059..7db09164 100644 --- a/exercises/practice/triangle/.meta/tests.toml +++ b/exercises/practice/triangle/.meta/tests.toml @@ -1,60 +1,73 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [8b2c43ac-7257-43f9-b552-7631a91988af] -description = "all sides are equal" +description = "equilateral triangle -> all sides are equal" [33eb6f87-0498-4ccf-9573-7f8c3ce92b7b] -description = "any side is unequal" +description = "equilateral triangle -> any side is unequal" [c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87] -description = "no sides are equal" +description = "equilateral triangle -> no sides are equal" [16e8ceb0-eadb-46d1-b892-c50327479251] -description = "all zero sides is not a triangle" +description = "equilateral triangle -> all zero sides is not a triangle" [3022f537-b8e5-4cc1-8f12-fd775827a00c] -description = "sides may be floats" +description = "equilateral triangle -> sides may be floats" [cbc612dc-d75a-4c1c-87fc-e2d5edd70b71] -description = "last two sides are equal" +description = "isosceles triangle -> last two sides are equal" [e388ce93-f25e-4daf-b977-4b7ede992217] -description = "first two sides are equal" +description = "isosceles triangle -> first two sides are equal" [d2080b79-4523-4c3f-9d42-2da6e81ab30f] -description = "first and last sides are equal" +description = "isosceles triangle -> first and last sides are equal" [8d71e185-2bd7-4841-b7e1-71689a5491d8] -description = "equilateral triangles are also isosceles" +description = "isosceles triangle -> equilateral triangles are also isosceles" [840ed5f8-366f-43c5-ac69-8f05e6f10bbb] -description = "no sides are equal" +description = "isosceles triangle -> no sides are equal" [2eba0cfb-6c65-4c40-8146-30b608905eae] -description = "first triangle inequality violation" +description = "isosceles triangle -> first triangle inequality violation" [278469cb-ac6b-41f0-81d4-66d9b828f8ac] -description = "second triangle inequality violation" +description = "isosceles triangle -> second triangle inequality violation" [90efb0c7-72bb-4514-b320-3a3892e278ff] -description = "third triangle inequality violation" +description = "isosceles triangle -> third triangle inequality violation" [adb4ee20-532f-43dc-8d31-e9271b7ef2bc] -description = "sides may be floats" +description = "isosceles triangle -> sides may be floats" [e8b5f09c-ec2e-47c1-abec-f35095733afb] -description = "no sides are equal" +description = "scalene triangle -> no sides are equal" [2510001f-b44d-4d18-9872-2303e7977dc1] -description = "all sides are equal" +description = "scalene triangle -> all sides are equal" [c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e] -description = "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 = "may not violate triangle inequality" +description = "scalene triangle -> may not violate triangle inequality" [26d9d59d-f8f1-40d3-ad58-ae4d54123d7d] -description = "sides may be floats" +description = "scalene triangle -> sides may be floats" From 283cc1d29a8049fcc883e25d275c2a4c1ce4b6d6 Mon Sep 17 00:00:00 2001 From: DebbieSan Date: Tue, 5 Mar 2024 11:25:48 -0800 Subject: [PATCH 2/5] Added tests to Triangle --- exercises/practice/triangle/triangle_test.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/exercises/practice/triangle/triangle_test.cpp b/exercises/practice/triangle/triangle_test.cpp index df338b7e..cb2b6322 100644 --- a/exercises/practice/triangle/triangle_test.cpp +++ b/exercises/practice/triangle/triangle_test.cpp @@ -37,7 +37,14 @@ TEST_CASE("isosceles_triangles_have_first_two_sides_equal") { REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 4, 3)); } - +TEST_CASE("first_and_third_sizes_are_equal") +{ + REQUIRE(triangle::flavor::scalene == triangle::kind(3,4,4)); +} +TEST_CASE("second_and_third_sizes_are_equal") +{ + REQUIRE(triangle::flavor:scalene == triangle::kind(4,3,3)); +} TEST_CASE("isosceles_triangles_have_in_fact_exactly_two_sides_equal") { REQUIRE(triangle::flavor::isosceles == triangle::kind(10, 10, 2)); @@ -87,4 +94,13 @@ TEST_CASE("double_and_integer_arguments") { REQUIRE(triangle::flavor::scalene == triangle::kind(5.5, 4, 2)); } +TEST_CASE("first_and_third_sides_are_equal") +{ + REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 3)); +} + +TEST_CASE("second_and_third_sides_are_equal") +{ + REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 3)); +} #endif From 3380da5a0ccf5379bd197f3183b873b64699bcb9 Mon Sep 17 00:00:00 2001 From: DebbieSan Date: Fri, 15 Mar 2024 10:25:28 -0700 Subject: [PATCH 3/5] Added UUIDs and changed test names --- exercises/practice/triangle/triangle_test.cpp | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/exercises/practice/triangle/triangle_test.cpp b/exercises/practice/triangle/triangle_test.cpp index cb2b6322..dc36c713 100644 --- a/exercises/practice/triangle/triangle_test.cpp +++ b/exercises/practice/triangle/triangle_test.cpp @@ -12,65 +12,77 @@ CATCH_REGISTER_ENUM(triangle::flavor, triangle::flavor::isosceles, triangle::flavor::scalene) -TEST_CASE("equilateral_triangles_have_equal_sides") +TEST_CASE("equilateral triangle -> all sides are equal","[8b2c43ac-7257-43f9-b552-7631a91988af]") + { REQUIRE(triangle::flavor::equilateral == triangle::kind(2, 2, 2)); } #if defined(EXERCISM_RUN_ALL_TESTS) -TEST_CASE("larger_equilateral_triangles_also_have_equal_sides") +TEST_CASE("larger_equilateral_triangles_also_have_equal_sides")[8b2c43ac-7257-43f9-b552-7631a91988af] +"equilateral triangle -> all sides are equal" { REQUIRE(triangle::flavor::equilateral == triangle::kind(10, 10, 10)); } -TEST_CASE("isosceles_triangles_have_last_two_sides_equal") +TEST_CASE("isosceles triangle -> last two sides are equal","[cbc612dc-d75a-4c1c-87fc-e2d5edd70b71]") +description = "isosceles triangle -> last two sides are equal" + { REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 4)); } -TEST_CASE("isosceles_triangles_have_first_and_last_sides_equal") +TEST_CASE("isosceles triangle -> first and last sides are equal",[d2080b79-4523-4c3f-9d42-2da6e81ab30f]) + { REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 4)); } -TEST_CASE("isosceles_triangles_have_first_two_sides_equal") +TEST_CASE("isosceles triangle -> first two sides are equal","[e388ce93-f25e-4daf-b977-4b7ede992217]") + { REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 4, 3)); } -TEST_CASE("first_and_third_sizes_are_equal") +TEST_CASE("scalene triangle -> first and third sides are equal", "[3da23a91-a166-419a-9abf-baf4868fd985") + { - REQUIRE(triangle::flavor::scalene == triangle::kind(3,4,4)); + REQUIRE(triangle::flavor::scalene == triangle::kind(3,4,3)); } -TEST_CASE("second_and_third_sizes_are_equal") +TEST_CASE("scalene triangle -> second and third sides are equal","[b6a75d98-1fef-4c42-8e9a-9db854ba0a4d]") + { REQUIRE(triangle::flavor:scalene == triangle::kind(4,3,3)); } -TEST_CASE("isosceles_triangles_have_in_fact_exactly_two_sides_equal") +TEST_CASE("isosceles triangle -> first two sides are equal","[e388ce93-f25e-4daf-b977-4b7ede992217]") + { REQUIRE(triangle::flavor::isosceles == triangle::kind(10, 10, 2)); } -TEST_CASE("scalene_triangles_have_no_equal_sides") +TEST_CASE("scalene triangle -> no sides are equal", "[e8b5f09c-ec2e-47c1-abec-f35095733afb]") + { REQUIRE(triangle::flavor::scalene == triangle::kind(3, 4, 5)); } -TEST_CASE("scalene_triangles_have_no_equal_sides_at_a_larger_scale_too") +TEST_CASE("scalene triangle -> no sides are equal", "[e8b5f09c-ec2e-47c1-abec-f35095733afb]") + { REQUIRE(triangle::flavor::scalene == triangle::kind(10, 11, 12)); } -TEST_CASE("scalene_triangles_have_no_equal_sides_in_descending_order_either") +TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") { REQUIRE(triangle::flavor::scalene == triangle::kind(5, 4, 2)); } -TEST_CASE("very_small_triangles_are_legal") +TEST_CASE("scalene triangle -> sides may be floats", "[26d9d59d-f8f1-40d3-ad58-ae4d54123d7d]") + { REQUIRE(triangle::flavor::scalene == triangle::kind(0.4, 0.6, 0.3)); } -TEST_CASE("triangles_with_no_size_are_illegal") +TEST_CASE("equilateral triangle -> all zero sides is not a triangle","[16e8ceb0-eadb-46d1-b892-c50327479251]") { REQUIRE_THROWS_AS(triangle::kind(0, 0, 0), std::domain_error); } @@ -80,12 +92,14 @@ TEST_CASE("triangles_with_negative_sides_are_illegal") REQUIRE_THROWS_AS(triangle::kind(3, 4, -5), std::domain_error); } -TEST_CASE("triangles_violating_triangle_inequality_are_illegal") +TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") + { REQUIRE_THROWS_AS(triangle::kind(1, 1, 3), std::domain_error); } -TEST_CASE("larger_triangles_violating_triangle_inequality_are_illegal") +TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") + { REQUIRE_THROWS_AS(triangle::kind(7, 3, 2), std::domain_error); } @@ -94,12 +108,13 @@ TEST_CASE("double_and_integer_arguments") { REQUIRE(triangle::flavor::scalene == triangle::kind(5.5, 4, 2)); } -TEST_CASE("first_and_third_sides_are_equal") +TEST_CASE("isosceles triangle -> first and last sides are equal","[d2080b79-4523-4c3f-9d42-2da6e81ab30f]") + { REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 3)); } -TEST_CASE("second_and_third_sides_are_equal") +TEST_CASE("scalene triangle -> second and third sides are equal","[b6a75d98-1fef-4c42-8e9a-9db854ba0a4d]") { REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 3)); } From b2dfcbeb98c69fd7d9da9945eae50fc8f0fe29f3 Mon Sep 17 00:00:00 2001 From: DebbieSan Date: Fri, 15 Mar 2024 10:37:22 -0700 Subject: [PATCH 4/5] Fixed incorrect syntax and removed extra text. --- exercises/practice/triangle/triangle_test.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/exercises/practice/triangle/triangle_test.cpp b/exercises/practice/triangle/triangle_test.cpp index dc36c713..9a7a5566 100644 --- a/exercises/practice/triangle/triangle_test.cpp +++ b/exercises/practice/triangle/triangle_test.cpp @@ -19,15 +19,13 @@ TEST_CASE("equilateral triangle -> all sides are equal","[8b2c43ac-7257-43f9-b55 } #if defined(EXERCISM_RUN_ALL_TESTS) -TEST_CASE("larger_equilateral_triangles_also_have_equal_sides")[8b2c43ac-7257-43f9-b552-7631a91988af] -"equilateral triangle -> all sides are equal" +TEST_CASE("equilateral triangle -> all sides are equal", "[8b2c43ac-7257-43f9-b552-7631a91988af]") + { REQUIRE(triangle::flavor::equilateral == triangle::kind(10, 10, 10)); } TEST_CASE("isosceles triangle -> last two sides are equal","[cbc612dc-d75a-4c1c-87fc-e2d5edd70b71]") -description = "isosceles triangle -> last two sides are equal" - { REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 4)); } From 65eacba264dc421f3599fea999c0be70a0bd3e85 Mon Sep 17 00:00:00 2001 From: vaeng <34183939+vaeng@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:53:39 +0200 Subject: [PATCH 5/5] fix: redo the submitted test file and toml The person who submitted the pr mixed some UUIDs and had tests doubled. Also some tests had to be excluded for this tracks, as they did not work with the chosen implementation. --- exercises/practice/triangle/.meta/tests.toml | 10 ++ exercises/practice/triangle/triangle_test.cpp | 145 ++++++++++-------- 2 files changed, 88 insertions(+), 67 deletions(-) diff --git a/exercises/practice/triangle/.meta/tests.toml b/exercises/practice/triangle/.meta/tests.toml index 7db09164..6a2c557a 100644 --- a/exercises/practice/triangle/.meta/tests.toml +++ b/exercises/practice/triangle/.meta/tests.toml @@ -35,6 +35,8 @@ description = "isosceles triangle -> first and last sides are equal" [8d71e185-2bd7-4841-b7e1-71689a5491d8] description = "isosceles triangle -> equilateral triangles are also isosceles" +include = false +comment = "the chosen implementation does not allow for this equivalence" [840ed5f8-366f-43c5-ac69-8f05e6f10bbb] description = "isosceles triangle -> no sides are equal" @@ -56,15 +58,23 @@ description = "scalene triangle -> no sides are equal" [2510001f-b44d-4d18-9872-2303e7977dc1] description = "scalene triangle -> all sides are equal" +include = false +comment = "the chosen implementation does not allow for this equivalence" [c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e] description = "scalene triangle -> first and second sides are equal" +include = false +comment = "the chosen implementation does not allow for this equivalence" [3da23a91-a166-419a-9abf-baf4868fd985] description = "scalene triangle -> first and third sides are equal" +include = false +comment = "the chosen implementation does not allow for this equivalence" [b6a75d98-1fef-4c42-8e9a-9db854ba0a4d] description = "scalene triangle -> second and third sides are equal" +include = false +comment = "the chosen implementation does not allow for this equivalence" [70ad5154-0033-48b7-af2c-b8d739cd9fdc] description = "scalene triangle -> may not violate triangle inequality" diff --git a/exercises/practice/triangle/triangle_test.cpp b/exercises/practice/triangle/triangle_test.cpp index 9a7a5566..aeda0bdd 100644 --- a/exercises/practice/triangle/triangle_test.cpp +++ b/exercises/practice/triangle/triangle_test.cpp @@ -6,114 +6,125 @@ #endif #include -// improves error messages with triangle flavor enum text instead of integers: -CATCH_REGISTER_ENUM(triangle::flavor, - triangle::flavor::equilateral, - triangle::flavor::isosceles, - triangle::flavor::scalene) +/* +Problem spec commentary: + + Pursuant to discussion in #202, we have decided NOT to test triangles + where all side lengths are positive but a + b = c. e.g: + (2, 4, 2, Isosceles), (1, 3, 4, Scalene). + It's true that the triangle inequality admits such triangles.These + triangles have zero area, however. + They're degenerate triangles with all three vertices collinear. + (In contrast, we will test (0, 0, 0, Illegal), as it is a point) + The tests assert properties of the triangle are true or false. + See: https://github.com/exercism/problem-specifications/issues/379 for + disscussion of this approach How you handle invalid triangles is up to you. + These tests suggest a triangle is returned, but all of its properties are +false. But you could also have the creation of an invalid triangle return an +error or exception. Choose what is idiomatic for your language." + +The CPP track has chosen to throw a domain error for invalid triangles. + +Tests, that check if an equilateral is also scalene (etc.) do not work with +the chosen implementation, they are therefore not implemented for this track. + +*/ -TEST_CASE("equilateral triangle -> all sides are equal","[8b2c43ac-7257-43f9-b552-7631a91988af]") +// improves error messages with triangle flavor enum text instead of integers: +CATCH_REGISTER_ENUM(triangle::flavor, triangle::flavor::equilateral, + triangle::flavor::isosceles, triangle::flavor::scalene) -{ +TEST_CASE("equilateral triangle -> all sides are equal", + "[8b2c43ac-7257-43f9-b552-7631a91988af]") { REQUIRE(triangle::flavor::equilateral == triangle::kind(2, 2, 2)); } #if defined(EXERCISM_RUN_ALL_TESTS) -TEST_CASE("equilateral triangle -> all sides are equal", "[8b2c43ac-7257-43f9-b552-7631a91988af]") -{ - REQUIRE(triangle::flavor::equilateral == triangle::kind(10, 10, 10)); +TEST_CASE("equilateral triangle -> any side is unequal", + "[33eb6f87-0498-4ccf-9573-7f8c3ce92b7b]") { + REQUIRE_FALSE(triangle::flavor::equilateral == triangle::kind(2, 3, 2)); } -TEST_CASE("isosceles triangle -> last two sides are equal","[cbc612dc-d75a-4c1c-87fc-e2d5edd70b71]") -{ - REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 4)); +TEST_CASE("equilateral triangle -> no sides are equal", + "[c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87]") { + REQUIRE_FALSE(triangle::flavor::equilateral == triangle::kind(5, 4, 6)); } -TEST_CASE("isosceles triangle -> first and last sides are equal",[d2080b79-4523-4c3f-9d42-2da6e81ab30f]) - -{ - REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 4)); +TEST_CASE("equilateral triangle -> sides may be floats", + "[3022f537-b8e5-4cc1-8f12-fd775827a00c]") { + REQUIRE(triangle::flavor::equilateral == triangle::kind(0.5, 0.5, 0.5)); } -TEST_CASE("isosceles triangle -> first two sides are equal","[e388ce93-f25e-4daf-b977-4b7ede992217]") +TEST_CASE("isosceles triangle -> last two sides are equal", + "[cbc612dc-d75a-4c1c-87fc-e2d5edd70b71]") { + REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 4)); +} -{ +TEST_CASE("isosceles triangle -> first two sides are equal", + "[e388ce93-f25e-4daf-b977-4b7ede992217]") { REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 4, 3)); } -TEST_CASE("scalene triangle -> first and third sides are equal", "[3da23a91-a166-419a-9abf-baf4868fd985") -{ - REQUIRE(triangle::flavor::scalene == triangle::kind(3,4,3)); +TEST_CASE("isosceles triangle -> first and last sides are equal", + "[d2080b79-4523-4c3f-9d42-2da6e81ab30f]") { + REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 4)); } -TEST_CASE("scalene triangle -> second and third sides are equal","[b6a75d98-1fef-4c42-8e9a-9db854ba0a4d]") -{ - REQUIRE(triangle::flavor:scalene == triangle::kind(4,3,3)); +TEST_CASE("isosceles triangle -> no sides are equal", + "[840ed5f8-366f-43c5-ac69-8f05e6f10bbb]") { + REQUIRE_FALSE(triangle::flavor::isosceles == triangle::kind(2, 3, 4)); } -TEST_CASE("isosceles triangle -> first two sides are equal","[e388ce93-f25e-4daf-b977-4b7ede992217]") -{ - REQUIRE(triangle::flavor::isosceles == triangle::kind(10, 10, 2)); +TEST_CASE("isosceles triangle -> first triangle inequality violation", + "[2eba0cfb-6c65-4c40-8146-30b608905eae]") { + REQUIRE_THROWS_AS(triangle::kind(1, 1, 3), std::domain_error); } -TEST_CASE("scalene triangle -> no sides are equal", "[e8b5f09c-ec2e-47c1-abec-f35095733afb]") - -{ - REQUIRE(triangle::flavor::scalene == triangle::kind(3, 4, 5)); +TEST_CASE("isosceles triangle -> second triangle inequality violation", + "[278469cb-ac6b-41f0-81d4-66d9b828f8ac]") { + REQUIRE_THROWS_AS(triangle::kind(1, 3, 1), std::domain_error); } -TEST_CASE("scalene triangle -> no sides are equal", "[e8b5f09c-ec2e-47c1-abec-f35095733afb]") - -{ - REQUIRE(triangle::flavor::scalene == triangle::kind(10, 11, 12)); +TEST_CASE("isosceles triangle -> third triangle inequality violation", + "[90efb0c7-72bb-4514-b320-3a3892e278ff]") { + REQUIRE_THROWS_AS(triangle::kind(3, 1, 1), std::domain_error); } -TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") -{ - REQUIRE(triangle::flavor::scalene == triangle::kind(5, 4, 2)); +TEST_CASE("isosceles triangle -> sides may be floats", + "[adb4ee20-532f-43dc-8d31-e9271b7ef2bc]") { + REQUIRE(triangle::flavor::isosceles == triangle::kind(0.5, 0.4, 0.5)); } -TEST_CASE("scalene triangle -> sides may be floats", "[26d9d59d-f8f1-40d3-ad58-ae4d54123d7d]") - -{ - REQUIRE(triangle::flavor::scalene == triangle::kind(0.4, 0.6, 0.3)); +TEST_CASE("scalene triangle -> no sides are equal", + "[e8b5f09c-ec2e-47c1-abec-f35095733afb]") { + REQUIRE(triangle::flavor::scalene == triangle::kind(5, 4, 6)); } -TEST_CASE("equilateral triangle -> all zero sides is not a triangle","[16e8ceb0-eadb-46d1-b892-c50327479251]") -{ - REQUIRE_THROWS_AS(triangle::kind(0, 0, 0), std::domain_error); +TEST_CASE("scalene triangle -> may not violate triangle inequality", + "[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") { + REQUIRE_THROWS_AS(triangle::kind(7, 3, 2), std::domain_error); } -TEST_CASE("triangles_with_negative_sides_are_illegal") -{ - REQUIRE_THROWS_AS(triangle::kind(3, 4, -5), std::domain_error); +TEST_CASE("scalene triangle -> sides may be floats", + "[26d9d59d-f8f1-40d3-ad58-ae4d54123d7d]") { + REQUIRE(triangle::flavor::scalene == triangle::kind(0.4, 0.6, 0.3)); } -TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") - -{ - REQUIRE_THROWS_AS(triangle::kind(1, 1, 3), std::domain_error); +TEST_CASE("all zero sides is not a triangle", + "[16e8ceb0-eadb-46d1-b892-c50327479251]") { + REQUIRE_THROWS_AS(triangle::kind(0, 0, 0), std::domain_error); } -TEST_CASE("scalene triangle -> may not violate triangle inequality","[70ad5154-0033-48b7-af2c-b8d739cd9fdc]") +// Tests that are not in the problem spec +// kept for legacy and specific cpp functionality -{ - REQUIRE_THROWS_AS(triangle::kind(7, 3, 2), std::domain_error); +TEST_CASE("triangles_with_negative_sides_are_illegal") { + REQUIRE_THROWS_AS(triangle::kind(3, 4, -5), std::domain_error); } -TEST_CASE("double_and_integer_arguments") -{ +TEST_CASE("double_and_integer_arguments") { REQUIRE(triangle::flavor::scalene == triangle::kind(5.5, 4, 2)); } -TEST_CASE("isosceles triangle -> first and last sides are equal","[d2080b79-4523-4c3f-9d42-2da6e81ab30f]") -{ - REQUIRE(triangle::flavor::isosceles == triangle::kind(3, 4, 3)); -} - -TEST_CASE("scalene triangle -> second and third sides are equal","[b6a75d98-1fef-4c42-8e9a-9db854ba0a4d]") -{ - REQUIRE(triangle::flavor::isosceles == triangle::kind(4, 3, 3)); -} #endif