From 6ddf37f5142151639c3e9948a62d6c0abd77d3b9 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Fri, 1 Jan 2021 16:10:59 +0000 Subject: [rust] Triangle --- rust/triangle/tests/triangle.rs | 183 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 rust/triangle/tests/triangle.rs (limited to 'rust/triangle/tests/triangle.rs') 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 @@ +use triangle::*; + +#[test] +fn positive_length_sides_are_ok() { + let sides = [2, 2, 2]; + let triangle = Triangle::build(sides); + assert!(triangle.is_some()); +} + +#[test] +fn zero_length_sides_are_illegal() { + let sides = [0, 0, 0]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +fn one_length_zero_side_first() { + let sides = [0, 2, 2]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +fn one_length_zero_side_second() { + let sides = [2, 0, 2]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +fn one_length_zero_side_third() { + let sides = [2, 2, 0]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +fn equilateral_triangles_have_equal_sides() { + let sides = [2, 2, 2]; + let triangle = Triangle::build(sides).unwrap(); + assert!(triangle.is_equilateral()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn larger_equilateral_triangles_have_equal_sides() { + let sides = [10, 10, 10]; + let triangle = Triangle::build(sides).unwrap(); + assert!(triangle.is_equilateral()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn isosceles_triangles_have_two_equal_sides_one() { + let sides = [3, 4, 4]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(triangle.is_isosceles()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn isosceles_triangles_have_two_equal_sides_two() { + let sides = [4, 4, 3]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(triangle.is_isosceles()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn isosceles_triangles_have_two_equal_sides_three() { + let sides = [4, 3, 4]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(triangle.is_isosceles()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn isosceles_triangles_have_two_equal_sides_four() { + let sides = [4, 7, 4]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(triangle.is_isosceles()); + assert!(!triangle.is_scalene()); +} + +#[test] +fn scalene_triangle_has_no_equal_sides_one() { + let sides = [3, 4, 5]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(!triangle.is_isosceles()); + assert!(triangle.is_scalene()); +} + +#[test] +fn scalene_triangle_has_no_equal_sides_two() { + let sides = [5, 4, 6]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(!triangle.is_isosceles()); + assert!(triangle.is_scalene()); +} + +#[test] +fn scalene_triangle_has_no_equal_sides_three() { + let sides = [10, 11, 12]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(!triangle.is_isosceles()); + assert!(triangle.is_scalene()); +} + +#[test] +fn scalene_triangle_has_no_equal_sides_four() { + let sides = [5, 4, 2]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(!triangle.is_isosceles()); + assert!(triangle.is_scalene()); +} + +#[test] +fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() { + let sides = [7, 3, 2]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() { + let sides = [1, 1, 3]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +#[cfg(feature = "generic")] +fn scalene_triangle_with_floating_point_sides() { + let sides = [0.4, 0.6, 0.3]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(!triangle.is_isosceles()); + assert!(triangle.is_scalene()); +} + +#[test] +#[cfg(feature = "generic")] +fn equilateral_triangles_with_floating_point_sides() { + let sides = [0.2, 0.2, 0.2]; + let triangle = Triangle::build(sides).unwrap(); + assert!(triangle.is_equilateral()); + assert!(!triangle.is_scalene()); +} + +#[test] +#[cfg(feature = "generic")] +fn isosceles_triangle_with_floating_point_sides() { + let sides = [0.3, 0.4, 0.4]; + let triangle = Triangle::build(sides).unwrap(); + assert!(!triangle.is_equilateral()); + assert!(triangle.is_isosceles()); + assert!(!triangle.is_scalene()); +} + +#[test] +#[cfg(feature = "generic")] +fn invalid_triangle_with_floating_point_sides_one() { + let sides = [0.0, 0.4, 0.3]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} + +#[test] +#[cfg(feature = "generic")] +fn invalid_triangle_with_floating_point_sides_two() { + let sides = [0.1, 0.3, 0.5]; + let triangle = Triangle::build(sides); + assert!(triangle.is_none()); +} -- cgit v1.2.3