From 7c9c81380bc7ac31d129d16e53e436503e1371e5 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 20:53:10 +0530 Subject: [PATCH 01/17] Updated Instructions.md --- .../practice/triangle/.docs/instructions.md | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/exercises/practice/triangle/.docs/instructions.md b/exercises/practice/triangle/.docs/instructions.md index 0a9c68e3b..e9b053dcd 100644 --- a/exercises/practice/triangle/.docs/instructions.md +++ b/exercises/practice/triangle/.docs/instructions.md @@ -4,20 +4,32 @@ Determine if a triangle is equilateral, isosceles, or scalene. An _equilateral_ triangle has all three sides the same length. -An _isosceles_ triangle has at least two sides the same length. (It is sometimes -specified as having exactly two sides the same length, but for the purposes of -this exercise we'll say at least two.) +An _isosceles_ triangle has at least two sides the same length. +(It is sometimes specified as having exactly two sides the same length, but for the purposes of this exercise we'll say at least two.) A _scalene_ triangle has all sides of different lengths. ## Note -For a shape to be a triangle at all, all sides have to be of length > 0, and -the sum of the lengths of any two sides must be greater than or equal to the -length of the third side. See [Triangle Inequality](https://en.wikipedia.org/wiki/Triangle_inequality). +For a shape to be a triangle at all, all sides have to be of length > 0, and the sum of the lengths of any two sides must be greater than or equal to the length of the third side. -## Dig Deeper +~~~~exercism/note +_Degenerate triangles_ are triangles where the sum of the length of two sides is **equal** to the length of the third side, e.g. `1, 1, 2`. +We opted to not include tests for degenerate triangles in this exercise. +You may handle those situations if you wish to do so, or safely ignore them. +~~~~ -The case where the sum of the lengths of two sides _equals_ that of the -third is known as a _degenerate_ triangle - it has zero area and looks like -a single line. Feel free to add your own code/tests to check for degenerate triangles. +In equations: + +Let `a`, `b`, and `c` be sides of the triangle. +Then all three of the following expressions must be true: + +```text +a + b ≥ c +b + c ≥ a +a + c ≥ b +``` + +See [Triangle Inequality][triangle-inequality] + +[triangle-inequality]: https://en.wikipedia.org/wiki/Triangle_inequality From 11e0f6c5558d50a29e4724711b2b5d3a35c52114 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 20:53:23 +0530 Subject: [PATCH 02/17] Updated test.toml file --- 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 59107059c..7db091648 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 caa0cc50a9c67d6f8556b96c42eed5b772c4d1b1 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 20:53:38 +0530 Subject: [PATCH 03/17] Removed Strict type comments --- exercises/practice/triangle/.meta/example.php | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/exercises/practice/triangle/.meta/example.php b/exercises/practice/triangle/.meta/example.php index f9d09a545..fdf59a5a1 100644 --- a/exercises/practice/triangle/.meta/example.php +++ b/exercises/practice/triangle/.meta/example.php @@ -1,27 +1,5 @@ . - * - * To disable strict typing, comment out the directive below. - */ - declare(strict_types=1); class Triangle From 73d43c5362650f1f8c6a5403c0682fe98858e751 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 20:54:10 +0530 Subject: [PATCH 04/17] Updated config.json file --- exercises/practice/triangle/.meta/config.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/practice/triangle/.meta/config.json b/exercises/practice/triangle/.meta/config.json index bd56d3f92..3e4b80543 100644 --- a/exercises/practice/triangle/.meta/config.json +++ b/exercises/practice/triangle/.meta/config.json @@ -7,7 +7,8 @@ "G-Rath", "kunicmarko20", "kytrinyx", - "petemcfarlane" + "petemcfarlane", + "Narkunan" ], "files": { "solution": [ @@ -22,5 +23,5 @@ }, "blurb": "Determine if a triangle is equilateral, isosceles, or scalene.", "source": "The Ruby Koans triangle project, parts 1 & 2", - "source_url": "https://rubykoans.com" + "source_url": "https://www.rubykoans.com/" } From f071805d48701f8baa91327375f00e097e36a0a2 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 20:54:51 +0530 Subject: [PATCH 05/17] Updated test cases --- exercises/practice/triangle/TriangleTest.php | 219 +++++++++++++------ 1 file changed, 158 insertions(+), 61 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 4db1ef1bd..9ada8aa36 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -1,29 +1,8 @@ . - * - * To disable strict typing, comment out the directive below. - */ - declare(strict_types=1); +use PHPUnit\Framework\Attributes\TestDox; use PHPUnit\Framework\TestCase; class TriangleTest extends TestCase @@ -33,6 +12,10 @@ public static function setUpBeforeClass(): void require_once 'Triangle.php'; } + /** + * Uuid: 8b2c43ac-7257-43f9-b552-7631a91988af. + */ + #[TestDox('equilateral triangle -> all sides are equal')] public function testEquilateralTrianglesHaveEqualSides(): void { $this->assertEquals( @@ -41,14 +24,55 @@ public function testEquilateralTrianglesHaveEqualSides(): void ); } - public function testLargerEquilateralTrianglesHaveEqualSides(): void + /** + * Uuid: 33eb6f87-0498-4ccf-9573-7f8c3ce92b7b. + */ + #[TestDox('equilateral triangle -> any side is unequal')] + public function testAnySideIsUnequal(): void + { + + $this->expectException(Exception::class); + (new Triangle(2, 3, 2))->kind(); + } + + /** + * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. + */ + #[TestDox('equilateral triangle -> no sides are equal')] + public function testNoSidesAreEqual(): void + { + $this->expectException(Exception::class); + + (new Triangle(5, 4, 6))->kind(); + } + + /** + * Uuid: 16e8ceb0-eadb-46d1-b892-c50327479251. + */ + #[TestDox('equilateral triangle -> all zero sides is not a triangle')] + public function testEquilateralAllZeroSidesIsNotATriangle(): void + { + $this->expectException(Exception::class); + + (new Triangle(0, 0, 0))->kind(); + } + + /** + * Uuid: 3022f537-b8e5-4cc1-8f12-fd775827a00c. + */ + #[TestDox('equilateral triangle -> sides may be floats')] + public function testEquilateralSidesMayBeFloats(): void { $this->assertEquals( 'equilateral', - (new Triangle(10, 10, 10))->kind() + (new Triangle(0.5, 0.5, 0.5)->kind()) ); } + /** + * Uuid: cbc612dc-d75a-4c1c-87fc-e2d5edd70b71. + */ + #[TestDox('isosceles triangle -> last two sides are equal')] public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void { $this->assertEquals( @@ -57,95 +81,168 @@ public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void ); } - public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void + /** + * Uuid: e388ce93-f25e-4daf-b977-4b7ede992217. + */ + #[TestDox('isosceles triangle -> first two sides are equal')] + public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void { $this->assertEquals( 'isosceles', - (new Triangle(4, 3, 4))->kind() + (new Triangle(4, 4, 3))->kind() ); } - public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void + /** + * Uuid: d2080b79-4523-4c3f-9d42-2da6e81ab30f. + */ + #[TestDox('isosceles triangle -> first and last sides are equal')] + public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void { $this->assertEquals( 'isosceles', - (new Triangle(4, 4, 3))->kind() + (new Triangle(4, 3, 4))->kind() ); } - public function testIsoscelesTrianglesWithUnequalSideLargerThanEqualSides(): void + /** + * Uuid: 8d71e185-2bd7-4841-b7e1-71689a5491d8. + */ + #[TestDox('isosceles triangle -> equilateral triangles are also isosceles')] + public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void { $this->assertEquals( 'isosceles', - (new Triangle(4, 4, 7))->kind() + (new Triangle(4, 4, 4))->kind() ); } - public function testScaleneTrianglesHaveNoEqualSides(): void + /** + * Uuid: 840ed5f8-366f-43c5-ac69-8f05e6f10bbb. + */ + #[TestDox('isosceles triangle -> no sides are equal')] + public function testIsoscelesTriangleNoSidesAreEqual(): void { - $this->assertEquals( - 'scalene', - (new Triangle(3, 4, 5))->kind() - ); + $this->expectException(Exception::class); + (new Triangle(2, 3, 4))->kind(); } - public function test2aEqualsBPlusCLooksLikeEquilateralButIsNot(): void + /** + * Uuid: 2eba0cfb-6c65-4c40-8146-30b608905eae. + */ + #[TestDox('isosceles triangle -> first triangle inequality violation')] + public function testIsoscelesFirstTriangleInequalityViolation(): void { - $this->assertEquals( - 'scalene', - (new Triangle(5, 4, 6))->kind() - ); + $this->expectException(Exception::class); + + (new Triangle(1, 1, 3))->kind(); } - public function testScaleneTrianglesHaveNoEqualSidesAtLargerScale(): void + /** + * Uuid: 278469cb-ac6b-41f0-81d4-66d9b828f8ac. + */ + #[TestDox('isosceles triangle -> second triangle inequality violation')] + public function testIsoscelesSecondTriangleInequalityViolation(): void { - $this->assertEquals( - 'scalene', - (new Triangle(10, 11, 12))->kind() - ); + $this->expectException(Exception::class); + + (new Triangle(1, 3, 1))->kind(); } - public function testScaleneTrianglesHaveNoEqualSidesInDescendingOrder(): void + /** + * Uuid: 90efb0c7-72bb-4514-b320-3a3892e278ff. + */ + #[TestDox('isosceles triangle -> third triangle inequality violation')] + public function testTrianglesThirdTriangleInequalityViolation(): void { - $this->assertEquals( - 'scalene', - (new Triangle(5, 4, 2))->kind() - ); + $this->expectException(Exception::class); + + (new Triangle(3, 1, 1))->kind(); } - public function testVerySmallTrianglesAreLegal(): void + /** + * Uuid: adb4ee20-532f-43dc-8d31-e9271b7ef2bc. + */ + #[TestDox('isosceles triangle -> sides may be floats')] + public function testIsoscelesSidesMayBeFloats(): void { $this->assertEquals( 'scalene', - (new Triangle(0.4, 0.6, 0.3))->kind() + (new Triangle(0.5, 0.4, 0.5))->kind() ); } - public function testTrianglesWithNoSizeAreIllegal(): void + /** + * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. + */ + #[TestDox('equilateral triangle -> no sides are equal')] + public function testEquilateralTriangleNoSidesAreEqual(): void { $this->expectException(Exception::class); - - (new Triangle(0, 0, 0))->kind(); + (new Triangle(5, 4, 6))->kind(); } - public function testTrianglesViolatingTriangleInequalityAreIllegal(): void + /** + * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. + */ + #[TestDox('scalene triangle -> all sides are equal')] + public function testScaleneAllSidesAreEqual(): void { + $this->expectException(Exception::class); + (new Triangle(4, 4, 4))->kind(); + } - (new Triangle(1, 1, 3))->kind(); + /** + * Uuid: c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e. + */ + #[TestDox('scalene triangle -> first and second sides are equal')] + public function testScaleneFirstAndSecondSidesAreEqual(): void + { + + $this->expectException(Exception::class); + (new Triangle(4, 4, 3))->kind(); } - public function testTrianglesViolatingTriangleInequalityAreIllegal2(): void + /** + * Uuid: 3da23a91-a166-419a-9abf-baf4868fd985. + */ + #[TestDox('scalene triangle -> first and third sides are equal')] + public function testScaleneFirstAndThirdSidesAreEqual(): void { $this->expectException(Exception::class); + (new Triangle(3, 4, 3))->kind(); + } - (new Triangle(7, 3, 2))->kind(); + /** + * Uuid: b6a75d98-1fef-4c42-8e9a-9db854ba0a4d. + */ + #[TestDox('scalene triangle -> second and third sides are equal')] + public function testScaleneSecondAndThirdSidesAreEqual(): void + { + $this->expectException(Exception::class); + (new Triangle(4, 3, 3))->kind(); } - public function testTrianglesViolatingTriangleInequalityAreIllegal3(): void + /** + * Uuid: 70ad5154-0033-48b7-af2c-b8d739cd9fdc. + */ + #[TestDox('scalene triangle -> may not violate triangle inequality')] + public function testScaleneMayNotViolateTriangleInequality(): void { $this->expectException(Exception::class); + (new Triangle(7, 3, 2))->kind(); + } - (new Triangle(1, 3, 1))->kind(); + /** + * Uuid: 26d9d59d-f8f1-40d3-ad58-ae4d54123d7d. + */ + #[TestDox('scalene triangle -> sides may be floats')] + public function testScaleneSidesMayBeFloats(): void + { + $this->assertEquals( + 'scalene', + (new Triangle(0.5, 0.4, 0.6))->kind() + ); } } From 35edaa557d9e9b7977996f3ebaadbeadd6ba20de Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 21:11:59 +0530 Subject: [PATCH 06/17] Fixed Wrong text case --- exercises/practice/triangle/TriangleTest.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 9ada8aa36..29e769d1d 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -167,21 +167,11 @@ public function testTrianglesThirdTriangleInequalityViolation(): void public function testIsoscelesSidesMayBeFloats(): void { $this->assertEquals( - 'scalene', + 'isosceles', (new Triangle(0.5, 0.4, 0.5))->kind() ); } - /** - * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. - */ - #[TestDox('equilateral triangle -> no sides are equal')] - public function testEquilateralTriangleNoSidesAreEqual(): void - { - $this->expectException(Exception::class); - (new Triangle(5, 4, 6))->kind(); - } - /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ From 0acec0db718aab00d5a773f65b8467f8c330530b Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 21:18:41 +0530 Subject: [PATCH 07/17] Revert "Fixed Wrong text case" This reverts commit 35edaa557d9e9b7977996f3ebaadbeadd6ba20de. --- exercises/practice/triangle/TriangleTest.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 29e769d1d..9ada8aa36 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -167,11 +167,21 @@ public function testTrianglesThirdTriangleInequalityViolation(): void public function testIsoscelesSidesMayBeFloats(): void { $this->assertEquals( - 'isosceles', + 'scalene', (new Triangle(0.5, 0.4, 0.5))->kind() ); } + /** + * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. + */ + #[TestDox('equilateral triangle -> no sides are equal')] + public function testEquilateralTriangleNoSidesAreEqual(): void + { + $this->expectException(Exception::class); + (new Triangle(5, 4, 6))->kind(); + } + /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ From 7dd88740f9b3f8ba80f7c5024e2d1032cd4a4d28 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 13 Jun 2026 21:19:19 +0530 Subject: [PATCH 08/17] Fixed Wrong Test Case --- exercises/practice/triangle/TriangleTest.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 9ada8aa36..29e769d1d 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -167,21 +167,11 @@ public function testTrianglesThirdTriangleInequalityViolation(): void public function testIsoscelesSidesMayBeFloats(): void { $this->assertEquals( - 'scalene', + 'isosceles', (new Triangle(0.5, 0.4, 0.5))->kind() ); } - /** - * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. - */ - #[TestDox('equilateral triangle -> no sides are equal')] - public function testEquilateralTriangleNoSidesAreEqual(): void - { - $this->expectException(Exception::class); - (new Triangle(5, 4, 6))->kind(); - } - /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ From a8a34030ea49d42d1796bd497c037e3e7088f922 Mon Sep 17 00:00:00 2001 From: narkunan Date: Mon, 15 Jun 2026 10:26:45 +0530 Subject: [PATCH 09/17] Added triangle in auto-sync.txt --- bin/auto-sync.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/auto-sync.txt b/bin/auto-sync.txt index b7a2f84ae..39b7e5793 100644 --- a/bin/auto-sync.txt +++ b/bin/auto-sync.txt @@ -76,6 +76,7 @@ spiral-matrix state-of-tic-tac-toe strain sublist +triangle two-bucket two-fer wordy From 39470d8dfee230144d7858cf9f82b0347cb675cb Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:37:56 +0530 Subject: [PATCH 10/17] Updated tests.toml to skip float test cases --- exercises/practice/triangle/.meta/tests.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/exercises/practice/triangle/.meta/tests.toml b/exercises/practice/triangle/.meta/tests.toml index 7db091648..da6346ff5 100644 --- a/exercises/practice/triangle/.meta/tests.toml +++ b/exercises/practice/triangle/.meta/tests.toml @@ -23,6 +23,8 @@ description = "equilateral triangle -> all zero sides is not a triangle" [3022f537-b8e5-4cc1-8f12-fd775827a00c] description = "equilateral triangle -> sides may be floats" +include = false +comment = "comparing floats would make the exercise too difficult" [cbc612dc-d75a-4c1c-87fc-e2d5edd70b71] description = "isosceles triangle -> last two sides are equal" @@ -50,6 +52,8 @@ description = "isosceles triangle -> third triangle inequality violation" [adb4ee20-532f-43dc-8d31-e9271b7ef2bc] description = "isosceles triangle -> sides may be floats" +include = false +comment = "comparing floats would make the exercise too difficult" [e8b5f09c-ec2e-47c1-abec-f35095733afb] description = "scalene triangle -> no sides are equal" @@ -71,3 +75,5 @@ description = "scalene triangle -> may not violate triangle inequality" [26d9d59d-f8f1-40d3-ad58-ae4d54123d7d] description = "scalene triangle -> sides may be floats" +include = false +comment = "comparing floats would make the exercise too difficult" From d9447c78be59e821d419752e8e43a57643c1051c Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:38:24 +0530 Subject: [PATCH 11/17] Changed student file interface for triangle --- exercises/practice/triangle/Triangle.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/exercises/practice/triangle/Triangle.php b/exercises/practice/triangle/Triangle.php index 85fde79f9..e1eec545e 100644 --- a/exercises/practice/triangle/Triangle.php +++ b/exercises/practice/triangle/Triangle.php @@ -28,11 +28,21 @@ class Triangle { public function __construct(int $a, int $b, int $c) { - throw new \BadMethodCallException("Implement the __construct method"); + throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__)); } - public function kind(): string + public function isEquilateral(): bool { - throw new \BadMethodCallException("Implement the kind method"); + throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__)); + } + + public function isIsosceles(): bool + { + throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__)); + } + + public function isScalene(): bool + { + throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__)); } } From fd0df0a45cb2d087dd53ea317ea4a746c59b552d Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:39:21 +0530 Subject: [PATCH 12/17] Updated logic in example file with new methods in triangle --- exercises/practice/triangle/.meta/example.php | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/exercises/practice/triangle/.meta/example.php b/exercises/practice/triangle/.meta/example.php index fdf59a5a1..8e86ed3a3 100644 --- a/exercises/practice/triangle/.meta/example.php +++ b/exercises/practice/triangle/.meta/example.php @@ -7,7 +7,6 @@ class Triangle protected $sideA; protected $sideB; protected $sideC; - public function __construct($sideA, $sideB, $sideC) { $this->sideA = $sideA; @@ -15,33 +14,37 @@ public function __construct($sideA, $sideB, $sideC) $this->sideC = $sideC; } - public function kind(): string + private function isValidTriangle(): bool { - if (0 == ($this->sideA + $this->sideB + $this->sideC)) { - throw new Exception("These sides have no values."); + if ($this->sideA <= 0 || $this->sideB <= 0 || $this->sideC <= 0) { + return false; } - $sides = [$this->sideA, $this->sideB, $this->sideC]; - sort($sides); - if ($sides[2] >= $sides[0] + $sides[1]) { - throw new Exception("This violates the triangle inequality"); - } + return ( + $this->sideA + $this->sideB > $this->sideC && + $this->sideA + $this->sideC > $this->sideB && + $this->sideB + $this->sideC > $this->sideA + ); + } - if ( + public function isEquilateral(): bool + { + return $this->isValidTriangle() && $this->sideA == $this->sideB && - $this->sideA == $this->sideC - ) { - return 'equilateral'; - } + $this->sideA == $this->sideC; + } - if ( - $this->sideB == $this->sideC || + public function isIsosceles(): bool + { + return $this->isValidTriangle() && ( + $this->sideA == $this->sideB || $this->sideA == $this->sideC || - $this->sideA == $this->sideB - ) { - return 'isosceles'; - } + $this->sideB == $this->sideC + ); + } - return 'scalene'; + public function isScalene(): bool + { + return $this->isValidTriangle() && !$this->isIsosceles(); } } From bd2ee6bf4557da34932a57aaf2662da2ff6c29c7 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:41:18 +0530 Subject: [PATCH 13/17] Updated test cases for triangle --- exercises/practice/triangle/TriangleTest.php | 118 +++++++------------ 1 file changed, 43 insertions(+), 75 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 29e769d1d..491fc6e91 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -18,9 +18,8 @@ public static function setUpBeforeClass(): void #[TestDox('equilateral triangle -> all sides are equal')] public function testEquilateralTrianglesHaveEqualSides(): void { - $this->assertEquals( - 'equilateral', - (new Triangle(2, 2, 2))->kind() + $this->assertTrue( + (new Triangle(2, 2, 2))->isEquilateral() ); } @@ -31,8 +30,9 @@ public function testEquilateralTrianglesHaveEqualSides(): void public function testAnySideIsUnequal(): void { - $this->expectException(Exception::class); - (new Triangle(2, 3, 2))->kind(); + $this->assertFalse( + (new Triangle(2, 3, 2))->isEquilateral() + ); } /** @@ -41,9 +41,9 @@ public function testAnySideIsUnequal(): void #[TestDox('equilateral triangle -> no sides are equal')] public function testNoSidesAreEqual(): void { - $this->expectException(Exception::class); - - (new Triangle(5, 4, 6))->kind(); + $this->assertFalse( + new Triangle(5, 4, 6)->isEquilateral() + ); } /** @@ -52,20 +52,9 @@ public function testNoSidesAreEqual(): void #[TestDox('equilateral triangle -> all zero sides is not a triangle')] public function testEquilateralAllZeroSidesIsNotATriangle(): void { - $this->expectException(Exception::class); - (new Triangle(0, 0, 0))->kind(); - } - - /** - * Uuid: 3022f537-b8e5-4cc1-8f12-fd775827a00c. - */ - #[TestDox('equilateral triangle -> sides may be floats')] - public function testEquilateralSidesMayBeFloats(): void - { - $this->assertEquals( - 'equilateral', - (new Triangle(0.5, 0.5, 0.5)->kind()) + $this->assertFalse( + (new Triangle(0, 0, 0))->isEquilateral() ); } @@ -75,9 +64,8 @@ public function testEquilateralSidesMayBeFloats(): void #[TestDox('isosceles triangle -> last two sides are equal')] public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void { - $this->assertEquals( - 'isosceles', - (new Triangle(3, 4, 4))->kind() + $this->assertTrue( + (new Triangle(3, 4, 4))->isIsosceles() ); } @@ -87,9 +75,8 @@ public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void #[TestDox('isosceles triangle -> first two sides are equal')] public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void { - $this->assertEquals( - 'isosceles', - (new Triangle(4, 4, 3))->kind() + $this->assertTrue( + (new Triangle(4, 4, 3))->isIsosceles() ); } @@ -99,9 +86,8 @@ public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void #[TestDox('isosceles triangle -> first and last sides are equal')] public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void { - $this->assertEquals( - 'isosceles', - (new Triangle(4, 3, 4))->kind() + $this->assertTrue( + (new Triangle(4, 3, 4))->isIsosceles() ); } @@ -111,9 +97,8 @@ public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void #[TestDox('isosceles triangle -> equilateral triangles are also isosceles')] public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void { - $this->assertEquals( - 'isosceles', - (new Triangle(4, 4, 4))->kind() + $this->assertTrue( + (new Triangle(4, 4, 4))->isIsosceles() ); } @@ -123,8 +108,9 @@ public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void #[TestDox('isosceles triangle -> no sides are equal')] public function testIsoscelesTriangleNoSidesAreEqual(): void { - $this->expectException(Exception::class); - (new Triangle(2, 3, 4))->kind(); + $this->assertFalse( + new Triangle(2, 3, 4)->isIsosceles() + ); } /** @@ -133,9 +119,10 @@ public function testIsoscelesTriangleNoSidesAreEqual(): void #[TestDox('isosceles triangle -> first triangle inequality violation')] public function testIsoscelesFirstTriangleInequalityViolation(): void { - $this->expectException(Exception::class); - (new Triangle(1, 1, 3))->kind(); + $this->assertFalse( + (new Triangle(1, 1, 3))->isIsosceles() + ); } /** @@ -144,9 +131,9 @@ public function testIsoscelesFirstTriangleInequalityViolation(): void #[TestDox('isosceles triangle -> second triangle inequality violation')] public function testIsoscelesSecondTriangleInequalityViolation(): void { - $this->expectException(Exception::class); - - (new Triangle(1, 3, 1))->kind(); + $this->assertFalse( + (new Triangle(1, 3, 1))->isIsosceles() + ); } /** @@ -155,20 +142,8 @@ public function testIsoscelesSecondTriangleInequalityViolation(): void #[TestDox('isosceles triangle -> third triangle inequality violation')] public function testTrianglesThirdTriangleInequalityViolation(): void { - $this->expectException(Exception::class); - - (new Triangle(3, 1, 1))->kind(); - } - - /** - * Uuid: adb4ee20-532f-43dc-8d31-e9271b7ef2bc. - */ - #[TestDox('isosceles triangle -> sides may be floats')] - public function testIsoscelesSidesMayBeFloats(): void - { - $this->assertEquals( - 'isosceles', - (new Triangle(0.5, 0.4, 0.5))->kind() + $this->assertFalse( + (new Triangle(3, 1, 1))->isIsosceles() ); } @@ -179,8 +154,9 @@ public function testIsoscelesSidesMayBeFloats(): void public function testScaleneAllSidesAreEqual(): void { - $this->expectException(Exception::class); - (new Triangle(4, 4, 4))->kind(); + $this->assertFalse( + (new Triangle(4, 4, 4))->isScalene() + ); } /** @@ -190,8 +166,9 @@ public function testScaleneAllSidesAreEqual(): void public function testScaleneFirstAndSecondSidesAreEqual(): void { - $this->expectException(Exception::class); - (new Triangle(4, 4, 3))->kind(); + $this->assertFalse( + (new Triangle(4, 4, 3))->isScalene() + ); } /** @@ -200,8 +177,9 @@ public function testScaleneFirstAndSecondSidesAreEqual(): void #[TestDox('scalene triangle -> first and third sides are equal')] public function testScaleneFirstAndThirdSidesAreEqual(): void { - $this->expectException(Exception::class); - (new Triangle(3, 4, 3))->kind(); + $this->assertFalse( + (new Triangle(3, 4, 3))->isScalene() + ); } /** @@ -210,8 +188,9 @@ public function testScaleneFirstAndThirdSidesAreEqual(): void #[TestDox('scalene triangle -> second and third sides are equal')] public function testScaleneSecondAndThirdSidesAreEqual(): void { - $this->expectException(Exception::class); - (new Triangle(4, 3, 3))->kind(); + $this->assertFalse( + (new Triangle(4, 3, 3))->isScalene() + ); } /** @@ -220,19 +199,8 @@ public function testScaleneSecondAndThirdSidesAreEqual(): void #[TestDox('scalene triangle -> may not violate triangle inequality')] public function testScaleneMayNotViolateTriangleInequality(): void { - $this->expectException(Exception::class); - (new Triangle(7, 3, 2))->kind(); - } - - /** - * Uuid: 26d9d59d-f8f1-40d3-ad58-ae4d54123d7d. - */ - #[TestDox('scalene triangle -> sides may be floats')] - public function testScaleneSidesMayBeFloats(): void - { - $this->assertEquals( - 'scalene', - (new Triangle(0.5, 0.4, 0.6))->kind() + $this->assertFalse( + (new Triangle(7, 3, 2))->isScalene() ); } } From c98da965e762520e5199e34d055308524bf770bd Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:52:20 +0530 Subject: [PATCH 14/17] Replaced single quotes with double quotes for test dox in triangle test file --- exercises/practice/triangle/TriangleTest.php | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 491fc6e91..d37873991 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -15,7 +15,7 @@ public static function setUpBeforeClass(): void /** * Uuid: 8b2c43ac-7257-43f9-b552-7631a91988af. */ - #[TestDox('equilateral triangle -> all sides are equal')] + #[TestDox("equilateral triangle -> all sides are equal")] public function testEquilateralTrianglesHaveEqualSides(): void { $this->assertTrue( @@ -26,7 +26,7 @@ public function testEquilateralTrianglesHaveEqualSides(): void /** * Uuid: 33eb6f87-0498-4ccf-9573-7f8c3ce92b7b. */ - #[TestDox('equilateral triangle -> any side is unequal')] + #[TestDox("equilateral triangle -> any side is unequal")] public function testAnySideIsUnequal(): void { @@ -38,7 +38,7 @@ public function testAnySideIsUnequal(): void /** * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. */ - #[TestDox('equilateral triangle -> no sides are equal')] + #[TestDox("equilateral triangle -> no sides are equal")] public function testNoSidesAreEqual(): void { $this->assertFalse( @@ -49,7 +49,7 @@ public function testNoSidesAreEqual(): void /** * Uuid: 16e8ceb0-eadb-46d1-b892-c50327479251. */ - #[TestDox('equilateral triangle -> all zero sides is not a triangle')] + #[TestDox("equilateral triangle -> all zero sides is not a triangle")] public function testEquilateralAllZeroSidesIsNotATriangle(): void { @@ -61,7 +61,7 @@ public function testEquilateralAllZeroSidesIsNotATriangle(): void /** * Uuid: cbc612dc-d75a-4c1c-87fc-e2d5edd70b71. */ - #[TestDox('isosceles triangle -> last two sides are equal')] + #[TestDox("isosceles triangle -> last two sides are equal")] public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void { $this->assertTrue( @@ -72,7 +72,7 @@ public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void /** * Uuid: e388ce93-f25e-4daf-b977-4b7ede992217. */ - #[TestDox('isosceles triangle -> first two sides are equal')] + #[TestDox("isosceles triangle -> first two sides are equal")] public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void { $this->assertTrue( @@ -83,7 +83,7 @@ public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void /** * Uuid: d2080b79-4523-4c3f-9d42-2da6e81ab30f. */ - #[TestDox('isosceles triangle -> first and last sides are equal')] + #[TestDox("isosceles triangle -> first and last sides are equal")] public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void { $this->assertTrue( @@ -94,7 +94,7 @@ public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void /** * Uuid: 8d71e185-2bd7-4841-b7e1-71689a5491d8. */ - #[TestDox('isosceles triangle -> equilateral triangles are also isosceles')] + #[TestDox("isosceles triangle -> equilateral triangles are also isosceles")] public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void { $this->assertTrue( @@ -105,7 +105,7 @@ public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void /** * Uuid: 840ed5f8-366f-43c5-ac69-8f05e6f10bbb. */ - #[TestDox('isosceles triangle -> no sides are equal')] + #[TestDox("isosceles triangle -> no sides are equal")] public function testIsoscelesTriangleNoSidesAreEqual(): void { $this->assertFalse( @@ -116,7 +116,7 @@ public function testIsoscelesTriangleNoSidesAreEqual(): void /** * Uuid: 2eba0cfb-6c65-4c40-8146-30b608905eae. */ - #[TestDox('isosceles triangle -> first triangle inequality violation')] + #[TestDox("isosceles triangle -> first triangle inequality violation")] public function testIsoscelesFirstTriangleInequalityViolation(): void { @@ -128,7 +128,7 @@ public function testIsoscelesFirstTriangleInequalityViolation(): void /** * Uuid: 278469cb-ac6b-41f0-81d4-66d9b828f8ac. */ - #[TestDox('isosceles triangle -> second triangle inequality violation')] + #[TestDox("isosceles triangle -> second triangle inequality violation")] public function testIsoscelesSecondTriangleInequalityViolation(): void { $this->assertFalse( @@ -139,7 +139,7 @@ public function testIsoscelesSecondTriangleInequalityViolation(): void /** * Uuid: 90efb0c7-72bb-4514-b320-3a3892e278ff. */ - #[TestDox('isosceles triangle -> third triangle inequality violation')] + #[TestDox("isosceles triangle -> third triangle inequality violation")] public function testTrianglesThirdTriangleInequalityViolation(): void { $this->assertFalse( @@ -150,7 +150,7 @@ public function testTrianglesThirdTriangleInequalityViolation(): void /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ - #[TestDox('scalene triangle -> all sides are equal')] + #[TestDox("scalene triangle -> all sides are equal")] public function testScaleneAllSidesAreEqual(): void { @@ -162,7 +162,7 @@ public function testScaleneAllSidesAreEqual(): void /** * Uuid: c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e. */ - #[TestDox('scalene triangle -> first and second sides are equal')] + #[TestDox("scalene triangle -> first and second sides are equal")] public function testScaleneFirstAndSecondSidesAreEqual(): void { @@ -174,7 +174,7 @@ public function testScaleneFirstAndSecondSidesAreEqual(): void /** * Uuid: 3da23a91-a166-419a-9abf-baf4868fd985. */ - #[TestDox('scalene triangle -> first and third sides are equal')] + #[TestDox("scalene triangle -> first and third sides are equal")] public function testScaleneFirstAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -185,7 +185,7 @@ public function testScaleneFirstAndThirdSidesAreEqual(): void /** * Uuid: b6a75d98-1fef-4c42-8e9a-9db854ba0a4d. */ - #[TestDox('scalene triangle -> second and third sides are equal')] + #[TestDox("scalene triangle -> second and third sides are equal")] public function testScaleneSecondAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -196,7 +196,7 @@ public function testScaleneSecondAndThirdSidesAreEqual(): void /** * Uuid: 70ad5154-0033-48b7-af2c-b8d739cd9fdc. */ - #[TestDox('scalene triangle -> may not violate triangle inequality')] + #[TestDox("scalene triangle -> may not violate triangle inequality")] public function testScaleneMayNotViolateTriangleInequality(): void { $this->assertFalse( From 7327ac61b1dfc0c259b27cd4492c93c8fbf09ac6 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 18:56:48 +0530 Subject: [PATCH 15/17] Fixed character escaping --- exercises/practice/triangle/TriangleTest.php | 32 ++++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index d37873991..8f8c65846 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -15,7 +15,7 @@ public static function setUpBeforeClass(): void /** * Uuid: 8b2c43ac-7257-43f9-b552-7631a91988af. */ - #[TestDox("equilateral triangle -> all sides are equal")] + #[TestDox("equilateral triangle \\-> all sides are equal")] public function testEquilateralTrianglesHaveEqualSides(): void { $this->assertTrue( @@ -26,7 +26,7 @@ public function testEquilateralTrianglesHaveEqualSides(): void /** * Uuid: 33eb6f87-0498-4ccf-9573-7f8c3ce92b7b. */ - #[TestDox("equilateral triangle -> any side is unequal")] + #[TestDox("equilateral triangle \\-> any side is unequal")] public function testAnySideIsUnequal(): void { @@ -38,7 +38,7 @@ public function testAnySideIsUnequal(): void /** * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. */ - #[TestDox("equilateral triangle -> no sides are equal")] + #[TestDox("equilateral triangle \\-> no sides are equal")] public function testNoSidesAreEqual(): void { $this->assertFalse( @@ -49,7 +49,7 @@ public function testNoSidesAreEqual(): void /** * Uuid: 16e8ceb0-eadb-46d1-b892-c50327479251. */ - #[TestDox("equilateral triangle -> all zero sides is not a triangle")] + #[TestDox("equilateral triangle \\-> all zero sides is not a triangle")] public function testEquilateralAllZeroSidesIsNotATriangle(): void { @@ -61,7 +61,7 @@ public function testEquilateralAllZeroSidesIsNotATriangle(): void /** * Uuid: cbc612dc-d75a-4c1c-87fc-e2d5edd70b71. */ - #[TestDox("isosceles triangle -> last two sides are equal")] + #[TestDox("isosceles triangle \\-> last two sides are equal")] public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void { $this->assertTrue( @@ -72,7 +72,7 @@ public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void /** * Uuid: e388ce93-f25e-4daf-b977-4b7ede992217. */ - #[TestDox("isosceles triangle -> first two sides are equal")] + #[TestDox("isosceles triangle \\-> first two sides are equal")] public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void { $this->assertTrue( @@ -83,7 +83,7 @@ public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void /** * Uuid: d2080b79-4523-4c3f-9d42-2da6e81ab30f. */ - #[TestDox("isosceles triangle -> first and last sides are equal")] + #[TestDox("isosceles triangle \\-> first and last sides are equal")] public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void { $this->assertTrue( @@ -94,7 +94,7 @@ public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void /** * Uuid: 8d71e185-2bd7-4841-b7e1-71689a5491d8. */ - #[TestDox("isosceles triangle -> equilateral triangles are also isosceles")] + #[TestDox("isosceles triangle \\-> equilateral triangles are also isosceles")] public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void { $this->assertTrue( @@ -105,7 +105,7 @@ public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void /** * Uuid: 840ed5f8-366f-43c5-ac69-8f05e6f10bbb. */ - #[TestDox("isosceles triangle -> no sides are equal")] + #[TestDox("isosceles triangle \\-> no sides are equal")] public function testIsoscelesTriangleNoSidesAreEqual(): void { $this->assertFalse( @@ -116,7 +116,7 @@ public function testIsoscelesTriangleNoSidesAreEqual(): void /** * Uuid: 2eba0cfb-6c65-4c40-8146-30b608905eae. */ - #[TestDox("isosceles triangle -> first triangle inequality violation")] + #[TestDox("isosceles triangle \\-> first triangle inequality violation")] public function testIsoscelesFirstTriangleInequalityViolation(): void { @@ -139,7 +139,7 @@ public function testIsoscelesSecondTriangleInequalityViolation(): void /** * Uuid: 90efb0c7-72bb-4514-b320-3a3892e278ff. */ - #[TestDox("isosceles triangle -> third triangle inequality violation")] + #[TestDox("isosceles triangle \\-> third triangle inequality violation")] public function testTrianglesThirdTriangleInequalityViolation(): void { $this->assertFalse( @@ -150,7 +150,7 @@ public function testTrianglesThirdTriangleInequalityViolation(): void /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ - #[TestDox("scalene triangle -> all sides are equal")] + #[TestDox("scalene triangle \\-> all sides are equal")] public function testScaleneAllSidesAreEqual(): void { @@ -162,7 +162,7 @@ public function testScaleneAllSidesAreEqual(): void /** * Uuid: c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e. */ - #[TestDox("scalene triangle -> first and second sides are equal")] + #[TestDox("scalene triangle \\-> first and second sides are equal")] public function testScaleneFirstAndSecondSidesAreEqual(): void { @@ -174,7 +174,7 @@ public function testScaleneFirstAndSecondSidesAreEqual(): void /** * Uuid: 3da23a91-a166-419a-9abf-baf4868fd985. */ - #[TestDox("scalene triangle -> first and third sides are equal")] + #[TestDox("scalene triangle \\-> first and third sides are equal")] public function testScaleneFirstAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -185,7 +185,7 @@ public function testScaleneFirstAndThirdSidesAreEqual(): void /** * Uuid: b6a75d98-1fef-4c42-8e9a-9db854ba0a4d. */ - #[TestDox("scalene triangle -> second and third sides are equal")] + #[TestDox("scalene triangle \\-> second and third sides are equal")] public function testScaleneSecondAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -196,7 +196,7 @@ public function testScaleneSecondAndThirdSidesAreEqual(): void /** * Uuid: 70ad5154-0033-48b7-af2c-b8d739cd9fdc. */ - #[TestDox("scalene triangle -> may not violate triangle inequality")] + #[TestDox("scalene triangle \\-> may not violate triangle inequality")] public function testScaleneMayNotViolateTriangleInequality(): void { $this->assertFalse( From 9a30709c4aff7aa99ec318ac63534c6f3fbaa7a7 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 19:00:23 +0530 Subject: [PATCH 16/17] Added missing parenthesis --- exercises/practice/triangle/TriangleTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 8f8c65846..5e141d4f7 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -42,7 +42,7 @@ public function testAnySideIsUnequal(): void public function testNoSidesAreEqual(): void { $this->assertFalse( - new Triangle(5, 4, 6)->isEquilateral() + (new Triangle(5, 4, 6))->isEquilateral() ); } @@ -109,7 +109,7 @@ public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void public function testIsoscelesTriangleNoSidesAreEqual(): void { $this->assertFalse( - new Triangle(2, 3, 4)->isIsosceles() + (new Triangle(2, 3, 4))->isIsosceles() ); } From 5b78b510d208ab465f8ff9f12899019f546f53b5 Mon Sep 17 00:00:00 2001 From: narkunan Date: Sat, 27 Jun 2026 19:05:59 +0530 Subject: [PATCH 17/17] Changed from double quotes to single quotes --- exercises/practice/triangle/TriangleTest.php | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/exercises/practice/triangle/TriangleTest.php b/exercises/practice/triangle/TriangleTest.php index 5e141d4f7..7bfb1f4e2 100644 --- a/exercises/practice/triangle/TriangleTest.php +++ b/exercises/practice/triangle/TriangleTest.php @@ -15,7 +15,7 @@ public static function setUpBeforeClass(): void /** * Uuid: 8b2c43ac-7257-43f9-b552-7631a91988af. */ - #[TestDox("equilateral triangle \\-> all sides are equal")] + #[TestDox('equilateral triangle -> all sides are equal')] public function testEquilateralTrianglesHaveEqualSides(): void { $this->assertTrue( @@ -26,7 +26,7 @@ public function testEquilateralTrianglesHaveEqualSides(): void /** * Uuid: 33eb6f87-0498-4ccf-9573-7f8c3ce92b7b. */ - #[TestDox("equilateral triangle \\-> any side is unequal")] + #[TestDox('equilateral triangle -> any side is unequal')] public function testAnySideIsUnequal(): void { @@ -38,7 +38,7 @@ public function testAnySideIsUnequal(): void /** * Uuid: c6585b7d-a8c0-4ad8-8a34-e21d36f7ad87. */ - #[TestDox("equilateral triangle \\-> no sides are equal")] + #[TestDox('equilateral triangle -> no sides are equal')] public function testNoSidesAreEqual(): void { $this->assertFalse( @@ -49,7 +49,7 @@ public function testNoSidesAreEqual(): void /** * Uuid: 16e8ceb0-eadb-46d1-b892-c50327479251. */ - #[TestDox("equilateral triangle \\-> all zero sides is not a triangle")] + #[TestDox('equilateral triangle -> all zero sides is not a triangle')] public function testEquilateralAllZeroSidesIsNotATriangle(): void { @@ -61,7 +61,7 @@ public function testEquilateralAllZeroSidesIsNotATriangle(): void /** * Uuid: cbc612dc-d75a-4c1c-87fc-e2d5edd70b71. */ - #[TestDox("isosceles triangle \\-> last two sides are equal")] + #[TestDox('isosceles triangle -> last two sides are equal')] public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void { $this->assertTrue( @@ -72,7 +72,7 @@ public function testIsoscelesTriangleWhenLastTwoSidesAreEqual(): void /** * Uuid: e388ce93-f25e-4daf-b977-4b7ede992217. */ - #[TestDox("isosceles triangle \\-> first two sides are equal")] + #[TestDox('isosceles triangle -> first two sides are equal')] public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void { $this->assertTrue( @@ -83,7 +83,7 @@ public function testIsoscelesTriangleWhenFirstTwoSidesAreEqual(): void /** * Uuid: d2080b79-4523-4c3f-9d42-2da6e81ab30f. */ - #[TestDox("isosceles triangle \\-> first and last sides are equal")] + #[TestDox('isosceles triangle -> first and last sides are equal')] public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void { $this->assertTrue( @@ -94,7 +94,7 @@ public function testIsoscelesTriangleWhenFirstAndLastSidesAreEqual(): void /** * Uuid: 8d71e185-2bd7-4841-b7e1-71689a5491d8. */ - #[TestDox("isosceles triangle \\-> equilateral triangles are also isosceles")] + #[TestDox('isosceles triangle -> equilateral triangles are also isosceles')] public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void { $this->assertTrue( @@ -105,7 +105,7 @@ public function testIsoscelesTriangleEquilateralTrianglesAreAlsoIsoceles(): void /** * Uuid: 840ed5f8-366f-43c5-ac69-8f05e6f10bbb. */ - #[TestDox("isosceles triangle \\-> no sides are equal")] + #[TestDox('isosceles triangle -> no sides are equal')] public function testIsoscelesTriangleNoSidesAreEqual(): void { $this->assertFalse( @@ -116,7 +116,7 @@ public function testIsoscelesTriangleNoSidesAreEqual(): void /** * Uuid: 2eba0cfb-6c65-4c40-8146-30b608905eae. */ - #[TestDox("isosceles triangle \\-> first triangle inequality violation")] + #[TestDox('isosceles triangle -> first triangle inequality violation')] public function testIsoscelesFirstTriangleInequalityViolation(): void { @@ -128,7 +128,7 @@ public function testIsoscelesFirstTriangleInequalityViolation(): void /** * Uuid: 278469cb-ac6b-41f0-81d4-66d9b828f8ac. */ - #[TestDox("isosceles triangle -> second triangle inequality violation")] + #[TestDox('isosceles triangle -> second triangle inequality violation')] public function testIsoscelesSecondTriangleInequalityViolation(): void { $this->assertFalse( @@ -139,7 +139,7 @@ public function testIsoscelesSecondTriangleInequalityViolation(): void /** * Uuid: 90efb0c7-72bb-4514-b320-3a3892e278ff. */ - #[TestDox("isosceles triangle \\-> third triangle inequality violation")] + #[TestDox('isosceles triangle -> third triangle inequality violation')] public function testTrianglesThirdTriangleInequalityViolation(): void { $this->assertFalse( @@ -150,7 +150,7 @@ public function testTrianglesThirdTriangleInequalityViolation(): void /** * Uuid: 2510001f-b44d-4d18-9872-2303e7977dc1. */ - #[TestDox("scalene triangle \\-> all sides are equal")] + #[TestDox('scalene triangle -> all sides are equal')] public function testScaleneAllSidesAreEqual(): void { @@ -162,7 +162,7 @@ public function testScaleneAllSidesAreEqual(): void /** * Uuid: c6e15a92-90d9-4fb3-90a2-eef64f8d3e1e. */ - #[TestDox("scalene triangle \\-> first and second sides are equal")] + #[TestDox('scalene triangle -> first and second sides are equal')] public function testScaleneFirstAndSecondSidesAreEqual(): void { @@ -174,7 +174,7 @@ public function testScaleneFirstAndSecondSidesAreEqual(): void /** * Uuid: 3da23a91-a166-419a-9abf-baf4868fd985. */ - #[TestDox("scalene triangle \\-> first and third sides are equal")] + #[TestDox('scalene triangle -> first and third sides are equal')] public function testScaleneFirstAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -185,7 +185,7 @@ public function testScaleneFirstAndThirdSidesAreEqual(): void /** * Uuid: b6a75d98-1fef-4c42-8e9a-9db854ba0a4d. */ - #[TestDox("scalene triangle \\-> second and third sides are equal")] + #[TestDox('scalene triangle -> second and third sides are equal')] public function testScaleneSecondAndThirdSidesAreEqual(): void { $this->assertFalse( @@ -196,7 +196,7 @@ public function testScaleneSecondAndThirdSidesAreEqual(): void /** * Uuid: 70ad5154-0033-48b7-af2c-b8d739cd9fdc. */ - #[TestDox("scalene triangle \\-> may not violate triangle inequality")] + #[TestDox('scalene triangle -> may not violate triangle inequality')] public function testScaleneMayNotViolateTriangleInequality(): void { $this->assertFalse(