Finish basic triangle
Did not implement generics due to floats not being ordered
This commit is contained in:
parent
86a3969e54
commit
603fbcef5f
2 changed files with 21 additions and 26 deletions
|
@ -1,19 +1,35 @@
|
||||||
pub struct Triangle;
|
pub struct Triangle{
|
||||||
|
side_one:u64,
|
||||||
|
side_two:u64,
|
||||||
|
side_three:u64
|
||||||
|
}
|
||||||
|
|
||||||
impl Triangle {
|
impl Triangle {
|
||||||
pub fn build(sides: [u64; 3]) -> Option<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 {
|
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 {
|
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 {
|
pub fn is_isosceles(&self) -> bool {
|
||||||
unimplemented!("Determine if the Triangle is isosceles.");
|
!self.is_scalene() && !self.is_equilateral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ fn positive_length_sides_are_ok() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn zero_length_sides_are_illegal() {
|
fn zero_length_sides_are_illegal() {
|
||||||
let sides = [0, 0, 0];
|
let sides = [0, 0, 0];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -16,7 +15,6 @@ fn zero_length_sides_are_illegal() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn one_length_zero_side_first() {
|
fn one_length_zero_side_first() {
|
||||||
let sides = [0, 2, 2];
|
let sides = [0, 2, 2];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -24,7 +22,6 @@ fn one_length_zero_side_first() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn one_length_zero_side_second() {
|
fn one_length_zero_side_second() {
|
||||||
let sides = [2, 0, 2];
|
let sides = [2, 0, 2];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -32,7 +29,6 @@ fn one_length_zero_side_second() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn one_length_zero_side_third() {
|
fn one_length_zero_side_third() {
|
||||||
let sides = [2, 2, 0];
|
let sides = [2, 2, 0];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -40,7 +36,6 @@ fn one_length_zero_side_third() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn equilateral_triangles_have_equal_sides() {
|
fn equilateral_triangles_have_equal_sides() {
|
||||||
let sides = [2, 2, 2];
|
let sides = [2, 2, 2];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -49,7 +44,6 @@ fn equilateral_triangles_have_equal_sides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn larger_equilateral_triangles_have_equal_sides() {
|
fn larger_equilateral_triangles_have_equal_sides() {
|
||||||
let sides = [10, 10, 10];
|
let sides = [10, 10, 10];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -58,7 +52,6 @@ fn larger_equilateral_triangles_have_equal_sides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn isosceles_triangles_have_two_equal_sides_one() {
|
fn isosceles_triangles_have_two_equal_sides_one() {
|
||||||
let sides = [3, 4, 4];
|
let sides = [3, 4, 4];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -68,7 +61,6 @@ fn isosceles_triangles_have_two_equal_sides_one() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn isosceles_triangles_have_two_equal_sides_two() {
|
fn isosceles_triangles_have_two_equal_sides_two() {
|
||||||
let sides = [4, 4, 3];
|
let sides = [4, 4, 3];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -78,7 +70,6 @@ fn isosceles_triangles_have_two_equal_sides_two() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn isosceles_triangles_have_two_equal_sides_three() {
|
fn isosceles_triangles_have_two_equal_sides_three() {
|
||||||
let sides = [4, 3, 4];
|
let sides = [4, 3, 4];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -88,7 +79,6 @@ fn isosceles_triangles_have_two_equal_sides_three() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn isosceles_triangles_have_two_equal_sides_four() {
|
fn isosceles_triangles_have_two_equal_sides_four() {
|
||||||
let sides = [4, 7, 4];
|
let sides = [4, 7, 4];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -98,7 +88,6 @@ fn isosceles_triangles_have_two_equal_sides_four() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn scalene_triangle_has_no_equal_sides_one() {
|
fn scalene_triangle_has_no_equal_sides_one() {
|
||||||
let sides = [3, 4, 5];
|
let sides = [3, 4, 5];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -108,7 +97,6 @@ fn scalene_triangle_has_no_equal_sides_one() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn scalene_triangle_has_no_equal_sides_two() {
|
fn scalene_triangle_has_no_equal_sides_two() {
|
||||||
let sides = [5, 4, 6];
|
let sides = [5, 4, 6];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -118,7 +106,6 @@ fn scalene_triangle_has_no_equal_sides_two() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn scalene_triangle_has_no_equal_sides_three() {
|
fn scalene_triangle_has_no_equal_sides_three() {
|
||||||
let sides = [10, 11, 12];
|
let sides = [10, 11, 12];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -128,7 +115,6 @@ fn scalene_triangle_has_no_equal_sides_three() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn scalene_triangle_has_no_equal_sides_four() {
|
fn scalene_triangle_has_no_equal_sides_four() {
|
||||||
let sides = [5, 4, 2];
|
let sides = [5, 4, 2];
|
||||||
let triangle = Triangle::build(sides).unwrap();
|
let triangle = Triangle::build(sides).unwrap();
|
||||||
|
@ -138,7 +124,6 @@ fn scalene_triangle_has_no_equal_sides_four() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() {
|
fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() {
|
||||||
let sides = [7, 3, 2];
|
let sides = [7, 3, 2];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -146,7 +131,6 @@ fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_one() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() {
|
fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() {
|
||||||
let sides = [1, 1, 3];
|
let sides = [1, 1, 3];
|
||||||
let triangle = Triangle::build(sides);
|
let triangle = Triangle::build(sides);
|
||||||
|
@ -154,7 +138,6 @@ fn sum_of_two_sides_must_equal_or_exceed_the_remaining_side_two() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
#[cfg(feature = "generic")]
|
#[cfg(feature = "generic")]
|
||||||
fn scalene_triangle_with_floating_point_sides() {
|
fn scalene_triangle_with_floating_point_sides() {
|
||||||
let sides = [0.4, 0.6, 0.3];
|
let sides = [0.4, 0.6, 0.3];
|
||||||
|
@ -165,7 +148,6 @@ fn scalene_triangle_with_floating_point_sides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
#[cfg(feature = "generic")]
|
#[cfg(feature = "generic")]
|
||||||
fn equilateral_triangles_with_floating_point_sides() {
|
fn equilateral_triangles_with_floating_point_sides() {
|
||||||
let sides = [0.2, 0.2, 0.2];
|
let sides = [0.2, 0.2, 0.2];
|
||||||
|
@ -175,7 +157,6 @@ fn equilateral_triangles_with_floating_point_sides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
#[cfg(feature = "generic")]
|
#[cfg(feature = "generic")]
|
||||||
fn isosceles_triangle_with_floating_point_sides() {
|
fn isosceles_triangle_with_floating_point_sides() {
|
||||||
let sides = [0.3, 0.4, 0.4];
|
let sides = [0.3, 0.4, 0.4];
|
||||||
|
@ -186,7 +167,6 @@ fn isosceles_triangle_with_floating_point_sides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
#[cfg(feature = "generic")]
|
#[cfg(feature = "generic")]
|
||||||
fn invalid_triangle_with_floating_point_sides_one() {
|
fn invalid_triangle_with_floating_point_sides_one() {
|
||||||
let sides = [0.0, 0.4, 0.3];
|
let sides = [0.0, 0.4, 0.3];
|
||||||
|
@ -195,7 +175,6 @@ fn invalid_triangle_with_floating_point_sides_one() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
|
||||||
#[cfg(feature = "generic")]
|
#[cfg(feature = "generic")]
|
||||||
fn invalid_triangle_with_floating_point_sides_two() {
|
fn invalid_triangle_with_floating_point_sides_two() {
|
||||||
let sides = [0.1, 0.3, 0.5];
|
let sides = [0.1, 0.3, 0.5];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue