Finish basic triangle

Did not implement generics due to floats not being ordered
This commit is contained in:
Blizzard Finnegan 2023-08-22 14:44:49 -04:00
parent 86a3969e54
commit 603fbcef5f
Signed by: blizzardfinnegan
GPG key ID: 61C1E13067E0018E
2 changed files with 21 additions and 26 deletions

View file

@ -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<Triangle> {
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()
}
}

View file

@ -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];