Skip to content

Commit 4a4665a

Browse files
authored
exercises(triangle): simplify error set (#218)
Before this commit, the `init` function needed to return the `InvalidInequality` error when the input sides violated the triangle inequality. This error had a strange name, and furthermore, the instructions did not explain degenerate triangles. So let's just combine the errors into a single error named `Invalid`. Closes: #215
1 parent 1ae7dda commit 4a4665a

2 files changed

Lines changed: 7 additions & 9 deletions

File tree

exercises/practice/triangle/.meta/example.zig

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
pub const TriangleError = error{
2-
Degenerate,
3-
InvalidInequality,
2+
Invalid,
43
};
54

65
pub const Triangle = struct {
@@ -9,8 +8,7 @@ pub const Triangle = struct {
98
c: f64,
109

1110
pub fn init(a: f64, b: f64, c: f64) TriangleError!Triangle {
12-
if ((a + b == c) or (a + c == b) or (b + c == a)) return TriangleError.Degenerate;
13-
if ((a + b < c) or (a + c < b) or (b + c < a)) return TriangleError.InvalidInequality;
11+
if ((a + b <= c) or (a + c <= b) or (b + c <= a)) return TriangleError.Invalid;
1412
return Triangle{ .a = a, .b = b, .c = c };
1513
}
1614

exercises/practice/triangle/test_triangle.zig

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ test "equilateral no sides are equal" {
2020

2121
test "equilateral all zero sides is not a triangle" {
2222
const actual = triangle.Triangle.init(0, 0, 0);
23-
try testing.expectError(triangle.TriangleError.Degenerate, actual);
23+
try testing.expectError(triangle.TriangleError.Invalid, actual);
2424
}
2525

2626
test "equilateral sides may be floats" {
@@ -55,17 +55,17 @@ test "isosceles no sides are equal" {
5555

5656
test "isosceles first triangle inequality violation" {
5757
const actual = triangle.Triangle.init(1, 1, 3);
58-
try testing.expectError(triangle.TriangleError.InvalidInequality, actual);
58+
try testing.expectError(triangle.TriangleError.Invalid, actual);
5959
}
6060

6161
test "isosceles second triangle inequality violation" {
6262
const actual = triangle.Triangle.init(1, 3, 1);
63-
try testing.expectError(triangle.TriangleError.InvalidInequality, actual);
63+
try testing.expectError(triangle.TriangleError.Invalid, actual);
6464
}
6565

6666
test "isosceles third triangle inequality violation" {
6767
const actual = triangle.Triangle.init(3, 1, 1);
68-
try testing.expectError(triangle.TriangleError.InvalidInequality, actual);
68+
try testing.expectError(triangle.TriangleError.Invalid, actual);
6969
}
7070

7171
test "isosceles sides may be floats" {
@@ -100,7 +100,7 @@ test "scalene second and third sides are equal" {
100100

101101
test "scalene may not violate triangle inequality" {
102102
const actual = triangle.Triangle.init(7, 3, 2);
103-
try testing.expectError(triangle.TriangleError.InvalidInequality, actual);
103+
try testing.expectError(triangle.TriangleError.Invalid, actual);
104104
}
105105

106106
test "scalene sides may be floats" {

0 commit comments

Comments
 (0)