diff --git a/triangle/src/lib.rs b/triangle/src/lib.rs index 4d28575..6699020 100644 --- a/triangle/src/lib.rs +++ b/triangle/src/lib.rs @@ -1,19 +1,35 @@ -pub struct Triangle; +pub struct Triangle{ + side_one:u64, + side_two:u64, + side_three:u64 +} impl Triangle { pub fn build(sides: [u64; 3]) -> Option { - unimplemented!("Construct new Triangle from following sides: {:?}. Return None if the sides are invalid.", sides); + if sides[0] <= 0 || sides[1] <= 0 || sides[2] <= 0{ + None + } else if sides[0] + sides[1] < sides[2] || + sides[1] + sides[2] < sides[0] || + sides[2] + sides[0] < sides[1]{ + None + } + else{ + Some(Triangle{side_one:sides[0],side_two:sides[1],side_three:sides[2]}) + } + } pub fn is_equilateral(&self) -> bool { - unimplemented!("Determine if the Triangle is equilateral."); + self.side_one == self.side_two && self.side_two == self.side_three } pub fn is_scalene(&self) -> bool { - unimplemented!("Determine if the Triangle is scalene."); + self.side_one != self.side_two && + self.side_two != self.side_three && + self.side_one != self.side_three } pub fn is_isosceles(&self) -> bool { - unimplemented!("Determine if the Triangle is isosceles."); + !self.is_scalene() && !self.is_equilateral() } } diff --git a/triangle/tests/triangle.rs b/triangle/tests/triangle.rs index c93221d..f3e4d8a 100644 --- a/triangle/tests/triangle.rs +++ b/triangle/tests/triangle.rs @@ -8,7 +8,6 @@ fn positive_length_sides_are_ok() { } #[test] -#[ignore] fn zero_length_sides_are_illegal() { let sides = [0, 0, 0]; let triangle = Triangle::build(sides); @@ -16,7 +15,6 @@ fn zero_length_sides_are_illegal() { } #[test] -#[ignore] fn one_length_zero_side_first() { let sides = [0, 2, 2]; let triangle = Triangle::build(sides); @@ -24,7 +22,6 @@ fn one_length_zero_side_first() { } #[test] -#[ignore] fn one_length_zero_side_second() { let sides = [2, 0, 2]; let triangle = Triangle::build(sides); @@ -32,7 +29,6 @@ fn one_length_zero_side_second() { } #[test] -#[ignore] fn one_length_zero_side_third() { let sides = [2, 2, 0]; let triangle = Triangle::build(sides); @@ -40,7 +36,6 @@ fn one_length_zero_side_third() { } #[test] -#[ignore] fn equilateral_triangles_have_equal_sides() { let sides = [2, 2, 2]; let triangle = Triangle::build(sides).unwrap(); @@ -49,7 +44,6 @@ fn equilateral_triangles_have_equal_sides() { } #[test] -#[ignore] fn larger_equilateral_triangles_have_equal_sides() { let sides = [10, 10, 10]; let triangle = Triangle::build(sides).unwrap(); @@ -58,7 +52,6 @@ fn larger_equilateral_triangles_have_equal_sides() { } #[test] -#[ignore] fn isosceles_triangles_have_two_equal_sides_one() { let sides = [3, 4, 4]; let triangle = Triangle::build(sides).unwrap(); @@ -68,7 +61,6 @@ fn isosceles_triangles_have_two_equal_sides_one() { } #[test] -#[ignore] fn isosceles_triangles_have_two_equal_sides_two() { let sides = [4, 4, 3]; let triangle = Triangle::build(sides).unwrap(); @@ -78,7 +70,6 @@ fn isosceles_triangles_have_two_equal_sides_two() { } #[test] -#[ignore] fn isosceles_triangles_have_two_equal_sides_three() { let sides = [4, 3, 4]; let triangle = Triangle::build(sides).unwrap(); @@ -88,7 +79,6 @@ fn isosceles_triangles_have_two_equal_sides_three() { } #[test] -#[ignore] fn isosceles_triangles_have_two_equal_sides_four() { let sides = [4, 7, 4]; let triangle = Triangle::build(sides).unwrap(); @@ -98,7 +88,6 @@ fn isosceles_triangles_have_two_equal_sides_four() { } #[test] -#[ignore] fn scalene_triangle_has_no_equal_sides_one() { let sides = [3, 4, 5]; let triangle = Triangle::build(sides).unwrap(); @@ -108,7 +97,6 @@ fn scalene_triangle_has_no_equal_sides_one() { } #[test] -#[ignore] fn scalene_triangle_has_no_equal_sides_two() { let sides = [5, 4, 6]; let triangle = Triangle::build(sides).unwrap(); @@ -118,7 +106,6 @@ fn scalene_triangle_has_no_equal_sides_two() { } #[test] -#[ignore] fn scalene_triangle_has_no_equal_sides_three() { let sides = [10, 11, 12]; let triangle = Triangle::build(sides).unwrap(); @@ -128,7 +115,6 @@ fn scalene_triangle_has_no_equal_sides_three() { } #[test] -#[ignore] fn scalene_triangle_has_no_equal_sides_four() { let sides = [5, 4, 2]; let triangle = Triangle::build(sides).unwrap(); @@ -138,7 +124,6 @@ fn scalene_triangle_has_no_equal_sides_four() { } #[test] -#[ignore] fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() { let sides = [7, 3, 2]; let triangle = Triangle::build(sides); @@ -146,7 +131,6 @@ fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() { } #[test] -#[ignore] fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() { let sides = [1, 1, 3]; let triangle = Triangle::build(sides); @@ -154,7 +138,6 @@ fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() { } #[test] -#[ignore] #[cfg(feature = "generic")] fn scalene_triangle_with_floating_point_sides() { let sides = [0.4, 0.6, 0.3]; @@ -165,7 +148,6 @@ fn scalene_triangle_with_floating_point_sides() { } #[test] -#[ignore] #[cfg(feature = "generic")] fn equilateral_triangles_with_floating_point_sides() { let sides = [0.2, 0.2, 0.2]; @@ -175,7 +157,6 @@ fn equilateral_triangles_with_floating_point_sides() { } #[test] -#[ignore] #[cfg(feature = "generic")] fn isosceles_triangle_with_floating_point_sides() { let sides = [0.3, 0.4, 0.4]; @@ -186,7 +167,6 @@ fn isosceles_triangle_with_floating_point_sides() { } #[test] -#[ignore] #[cfg(feature = "generic")] fn invalid_triangle_with_floating_point_sides_one() { let sides = [0.0, 0.4, 0.3]; @@ -195,7 +175,6 @@ fn invalid_triangle_with_floating_point_sides_one() { } #[test] -#[ignore] #[cfg(feature = "generic")] fn invalid_triangle_with_floating_point_sides_two() { let sides = [0.1, 0.3, 0.5];