aboutsummaryrefslogtreecommitdiff
path: root/rust/triangle/tests
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2021-01-01 16:10:59 +0000
committerFederico Igne <git@federicoigne.com>2021-11-03 18:55:08 +0000
commit6ddf37f5142151639c3e9948a62d6c0abd77d3b9 (patch)
tree80040e3f95813d119cc297a3d10a462b2f030c12 /rust/triangle/tests
parent63122ddc672e2d287b9cc0e7752675cb0f70f7cf (diff)
downloadexercism-6ddf37f5142151639c3e9948a62d6c0abd77d3b9.tar.gz
exercism-6ddf37f5142151639c3e9948a62d6c0abd77d3b9.zip
[rust] Triangle
Diffstat (limited to 'rust/triangle/tests')
-rw-r--r--rust/triangle/tests/triangle.rs183
1 files changed, 183 insertions, 0 deletions
diff --git a/rust/triangle/tests/triangle.rs b/rust/triangle/tests/triangle.rs
new file mode 100644
index 0000000..f3e4d8a
--- /dev/null
+++ b/rust/triangle/tests/triangle.rs
@@ -0,0 +1,183 @@
1use triangle::*;
2
3#[test]
4fn positive_length_sides_are_ok() {
5 let sides = [2, 2, 2];
6 let triangle = Triangle::build(sides);
7 assert!(triangle.is_some());
8}
9
10#[test]
11fn zero_length_sides_are_illegal() {
12 let sides = [0, 0, 0];
13 let triangle = Triangle::build(sides);
14 assert!(triangle.is_none());
15}
16
17#[test]
18fn one_length_zero_side_first() {
19 let sides = [0, 2, 2];
20 let triangle = Triangle::build(sides);
21 assert!(triangle.is_none());
22}
23
24#[test]
25fn one_length_zero_side_second() {
26 let sides = [2, 0, 2];
27 let triangle = Triangle::build(sides);
28 assert!(triangle.is_none());
29}
30
31#[test]
32fn one_length_zero_side_third() {
33 let sides = [2, 2, 0];
34 let triangle = Triangle::build(sides);
35 assert!(triangle.is_none());
36}
37
38#[test]
39fn equilateral_triangles_have_equal_sides() {
40 let sides = [2, 2, 2];
41 let triangle = Triangle::build(sides).unwrap();
42 assert!(triangle.is_equilateral());
43 assert!(!triangle.is_scalene());
44}
45
46#[test]
47fn larger_equilateral_triangles_have_equal_sides() {
48 let sides = [10, 10, 10];
49 let triangle = Triangle::build(sides).unwrap();
50 assert!(triangle.is_equilateral());
51 assert!(!triangle.is_scalene());
52}
53
54#[test]
55fn isosceles_triangles_have_two_equal_sides_one() {
56 let sides = [3, 4, 4];
57 let triangle = Triangle::build(sides).unwrap();
58 assert!(!triangle.is_equilateral());
59 assert!(triangle.is_isosceles());
60 assert!(!triangle.is_scalene());
61}
62
63#[test]
64fn isosceles_triangles_have_two_equal_sides_two() {
65 let sides = [4, 4, 3];
66 let triangle = Triangle::build(sides).unwrap();
67 assert!(!triangle.is_equilateral());
68 assert!(triangle.is_isosceles());
69 assert!(!triangle.is_scalene());
70}
71
72#[test]
73fn isosceles_triangles_have_two_equal_sides_three() {
74 let sides = [4, 3, 4];
75 let triangle = Triangle::build(sides).unwrap();
76 assert!(!triangle.is_equilateral());
77 assert!(triangle.is_isosceles());
78 assert!(!triangle.is_scalene());
79}
80
81#[test]
82fn isosceles_triangles_have_two_equal_sides_four() {
83 let sides = [4, 7, 4];
84 let triangle = Triangle::build(sides).unwrap();
85 assert!(!triangle.is_equilateral());
86 assert!(triangle.is_isosceles());
87 assert!(!triangle.is_scalene());
88}
89
90#[test]
91fn scalene_triangle_has_no_equal_sides_one() {
92 let sides = [3, 4, 5];
93 let triangle = Triangle::build(sides).unwrap();
94 assert!(!triangle.is_equilateral());
95 assert!(!triangle.is_isosceles());
96 assert!(triangle.is_scalene());
97}
98
99#[test]
100fn scalene_triangle_has_no_equal_sides_two() {
101 let sides = [5, 4, 6];
102 let triangle = Triangle::build(sides).unwrap();
103 assert!(!triangle.is_equilateral());
104 assert!(!triangle.is_isosceles());
105 assert!(triangle.is_scalene());
106}
107
108#[test]
109fn scalene_triangle_has_no_equal_sides_three() {
110 let sides = [10, 11, 12];
111 let triangle = Triangle::build(sides).unwrap();
112 assert!(!triangle.is_equilateral());
113 assert!(!triangle.is_isosceles());
114 assert!(triangle.is_scalene());
115}
116
117#[test]
118fn scalene_triangle_has_no_equal_sides_four() {
119 let sides = [5, 4, 2];
120 let triangle = Triangle::build(sides).unwrap();
121 assert!(!triangle.is_equilateral());
122 assert!(!triangle.is_isosceles());
123 assert!(triangle.is_scalene());
124}
125
126#[test]
127fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() {
128 let sides = [7, 3, 2];
129 let triangle = Triangle::build(sides);
130 assert!(triangle.is_none());
131}
132
133#[test]
134fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() {
135 let sides = [1, 1, 3];
136 let triangle = Triangle::build(sides);
137 assert!(triangle.is_none());
138}
139
140#[test]
141#[cfg(feature = "generic")]
142fn scalene_triangle_with_floating_point_sides() {
143 let sides = [0.4, 0.6, 0.3];
144 let triangle = Triangle::build(sides).unwrap();
145 assert!(!triangle.is_equilateral());
146 assert!(!triangle.is_isosceles());
147 assert!(triangle.is_scalene());
148}
149
150#[test]
151#[cfg(feature = "generic")]
152fn equilateral_triangles_with_floating_point_sides() {
153 let sides = [0.2, 0.2, 0.2];
154 let triangle = Triangle::build(sides).unwrap();
155 assert!(triangle.is_equilateral());
156 assert!(!triangle.is_scalene());
157}
158
159#[test]
160#[cfg(feature = "generic")]
161fn isosceles_triangle_with_floating_point_sides() {
162 let sides = [0.3, 0.4, 0.4];
163 let triangle = Triangle::build(sides).unwrap();
164 assert!(!triangle.is_equilateral());
165 assert!(triangle.is_isosceles());
166 assert!(!triangle.is_scalene());
167}
168
169#[test]
170#[cfg(feature = "generic")]
171fn invalid_triangle_with_floating_point_sides_one() {
172 let sides = [0.0, 0.4, 0.3];
173 let triangle = Triangle::build(sides);
174 assert!(triangle.is_none());
175}
176
177#[test]
178#[cfg(feature = "generic")]
179fn invalid_triangle_with_floating_point_sides_two() {
180 let sides = [0.1, 0.3, 0.5];
181 let triangle = Triangle::build(sides);
182 assert!(triangle.is_none());
183}