Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import unittest, random
- import triangulo
- class TrianguloGoodInput(unittest.TestCase):
- three_sides = [
- ({"A":100, "B":100, "C":100}, {"A":100, "B":100, "C":100, "a":60, "b":60, "c":60}),
- ({"A":100, "B":70.71067811865, "C":70.71067811865}, {"A":100, "B":70.71067811865, "C":70.71067811865, "a":90, "b":45, "c":45}),
- ({'A': 100, 'B': 173.20508075688775, 'C': 200}, {'a': 30, 'A': 100, 'c': 90.0, 'b': 60, 'B': 173.20508075688775, 'C': 200.00000000000003}),
- ]
- two_sides_one_angle_overlapping = [
- ({"A":100, "B":100, "b":60}, {"A":100, "B":100, "C":100, "a":60, "b":60, "c":60}),
- ({"A":100, "C":70.71067811865, "c":45}, {"A":100, "B":70.71067811865, "C":70.71067811865, "a":90, "b":45, "c":45}),
- ({'a': 30, 'A': 100, 'C': 200}, {'a': 30, 'A': 100, 'c': 89.999999146226358, 'b': 60.000000853773642, 'B': 173.20508224700384, 'C': 200}),
- ]
- two_sides_one_angle_non_overlapping = [
- ({"A":100, "B":100, "c":60}, {"A":100, "B":100, "C":100, "a":60, "b":60, "c":60}),
- ({"A":100, "C":70.71067811865, "b":45}, {"A":100, "B":70.71067811865, "C":70.71067811865, "a":90, "b":45, "c":45}),
- ({'A': 100, 'b': 60, 'C': 200}, {'a': 30, 'A': 100, 'c': 90.0, 'b': 60, 'B': 173.20508075688775, 'C': 200}),
- ]
- one_side_two_angles_overlapping = [
- ({"A":100, "a":60, "c":60}, {"A":100, "B":100, "C":100, "a":60, "b":60, "c":60}),
- ({"A":100, "a":90, "b":45}, {"A":100, "B":70.71067811865, "C":70.71067811865, "a":90, "b":45, "c":45}),
- ({'A': 100, 'c': 90.0, 'C': 200}, {'a': 30, 'A': 100, 'c': 90.0, 'b': 60, 'B': 173.20508075688775, 'C': 200}),
- ]
- one_side_two_angles_non_overlapping = [
- ({"A":100, "b":60, "c":60}, {"A":100, "B":100, "C":100, "a":60, "b":60, "c":60}),
- ({"A":100, "c":45, "b":45}, {"A":100, "B":70.71067811865, "C":70.71067811865, "a":90, "b":45, "c":45}),
- ]
- def test_3_sidesgiven(self):
- for input, expected in self.three_sides:
- for element, value in triangulo.get_triangle_values(**input).iteritems():
- self.assertAlmostEqual(value, expected[element])
- def test_2_sides_1_angle_non_overlapping(self):
- for input, expected in self.two_sides_one_angle_non_overlapping:
- for element, value in triangulo.get_triangle_values(**input).iteritems():
- self.assertAlmostEqual(value, expected[element])
- def test_2_sides_1_angle_overlapping(self):
- for input, expected in self.two_sides_one_angle_overlapping:
- for element, value in triangulo.get_triangle_values(**input).iteritems():
- self.assertAlmostEqual(value, expected[element])
- def test_1_side_2_angles_non_overlapping(self):
- for input, expected in self.one_side_two_angles_non_overlapping:
- for element, value in triangulo.get_triangle_values(**input).iteritems():
- self.assertAlmostEqual(value, expected[element])
- def test_1_side_2_angles_overlapping(self):
- for input, expected in self.one_side_two_angles_overlapping:
- for element, value in triangulo.get_triangle_values(**input).iteritems():
- self.assertAlmostEqual(value, expected[element])
- def test_angles(self):
- """
- No matter the input sides, the sum of the angles must be 180.
- """
- for i in range(1):
- self.assertAlmostEqual(
- sum(
- triangulo.get_known_angles(
- **triangulo.get_triangle_values(
- A=random.Random().uniform(1,5),
- B=random.Random().uniform(1,5),
- c=random.Random().uniform(0,180))
- ).itervalues()),
- 180)
- class TrianguloBadInput(unittest.TestCase):
- bad_sides = [
- {"A":181, "B":90, "C":90},
- {"A":90, "B":181, "C":90},
- {"A":90, "B":90, "C":181},
- {"A":20, "B":120, "C":90},
- {"A":90, "B":20, "C":10},
- {"A":0, "B":0, "C":1},
- ]
- bad_angles = [
- {"a":90, "b":90, "c":90, "B":90, "C":90},
- {"A":90, "B":181, "C":90, "a":90, "b":90, "a":90},
- ]
- few_inputs = [
- {"A":100, "B":100},
- {"A":100, "C":100},
- {"B":100, "C":100},
- {"A":100, "b":100},
- {"A":100, "c":100},
- {"a":100, "C":100},
- {"a":100, "B":100},
- ]
- def test_bad_sides(self):
- """
- len([i for i in sides if i <= sum(sides)/2]) == 0
- """
- for input in self.bad_sides:
- self.failUnlessRaises(triangulo.InconsistentDataError, triangulo.get_triangle_values, **input)
- def test_bad_angles(self):
- """
- len([i for i in sides if i <= sum(sides)/2]) == 0
- """
- for input in self.bad_sides:
- self.failUnlessRaises(triangulo.InconsistentDataError, triangulo.get_triangle_values, **input)
- def test_too_few_inputs(self):
- """
- """
- for input in self.few_inputs:
- self.failUnlessRaises(triangulo.InsufficientDataError, triangulo.get_triangle_values, **input)
- class KnownSides(unittest.TestCase):
- good_input = [ #100% coverage might be overkill :)
- ({"A":100, "B":100, "C":100, "a":100, "b":100, "c":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "b":100, "c":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "a":100, "c":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "a":100, "b":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "a":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "b":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "C":100, "c":100}, {"A":100, "B":100, "C":100}),
- ({"A":100, "B":100, "a":100, "b":100, "c":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "b":100, "c":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "a":100, "c":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "a":100, "b":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "a":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "b":100}, {"A":100, "B":100}),
- ({"A":100, "B":100, "c":100}, {"A":100, "B":100}),
- ({"A":100, "C":100, "a":100, "b":100, "c":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "b":100, "c":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "a":100, "c":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "a":100, "b":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "a":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "b":100}, {"A":100, "C":100}),
- ({"A":100, "C":100, "c":100}, {"A":100, "C":100}),
- ({"B":100, "C":100, "a":100, "b":100, "c":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "b":100, "c":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "a":100, "c":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "a":100, "b":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "a":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "b":100}, {"B":100, "C":100}),
- ({"B":100, "C":100, "c":100}, {"B":100, "C":100}),
- ({"A":100, "a":100, "b":100, "c":100}, {"A":100}),
- ({"A":100, "b":100, "c":100}, {"A":100}),
- ({"A":100, "a":100, "c":100}, {"A":100}),
- ({"A":100, "a":100, "b":100}, {"A":100}),
- ({"A":100, "a":100}, {"A":100}),
- ({"A":100, "b":100}, {"A":100}),
- ({"A":100, "c":100}, {"A":100}),
- ({"B":100, "a":100, "b":100, "c":100}, {"B":100}),
- ({"B":100, "b":100, "c":100}, {"B":100}),
- ({"B":100, "a":100, "c":100}, {"B":100}),
- ({"B":100, "a":100, "b":100}, {"B":100}),
- ({"B":100, "a":100}, {"B":100}),
- ({"B":100, "b":100}, {"B":100}),
- ({"B":100, "c":100}, {"B":100}),
- ({"C":100, "a":100, "b":100, "c":100}, {"C":100}),
- ({"C":100, "b":100, "c":100}, {"C":100}),
- ({"C":100, "a":100, "c":100}, {"C":100}),
- ({"C":100, "a":100, "b":100}, {"C":100}),
- ({"C":100, "a":100}, {"C":100}),
- ({"C":100, "b":100}, {"C":100}),
- ({"C":100, "c":100}, {"C":100}),
- ({"A":100, "B":100, "C":100}, {"A":100, "B":100, "C":100}),
- ({"B":100, "C":100}, {"B":100, "C":100}),
- ({"A":100, "C":100}, {"A":100, "C":100}),
- ({"A":100, "B":100}, {"A":100, "B":100}),
- ({"A":100}, {"A":100}),
- ({"B":100}, {"B":100}),
- ({"C":100}, {"C":100}),
- ]
- def test_good_input(self):
- for input, expected in self.good_input:
- self.assertEqual(triangulo.get_known_sides(**input), expected)
- class KnownAngles(unittest.TestCase):
- good_input = [ #100% coverage might be overkill :)
- ({"A":100, "B":100, "C":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"A":100, "B":100, "C":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"A":100, "B":100, "C":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"A":100, "B":100, "C":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"A":100, "B":100, "C":100, "a":100}, {"a":100}),
- ({"A":100, "B":100, "C":100, "b":100}, {"b":100}),
- ({"A":100, "B":100, "C":100, "c":100}, {"c":100}),
- ({"A":100, "B":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"A":100, "B":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"A":100, "B":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"A":100, "B":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"A":100, "B":100, "a":100}, {"a":100}),
- ({"A":100, "B":100, "b":100}, {"b":100}),
- ({"A":100, "B":100, "c":100}, {"c":100}),
- ({"A":100, "C":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"A":100, "C":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"A":100, "C":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"A":100, "C":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"A":100, "C":100, "a":100}, {"a":100}),
- ({"A":100, "C":100, "b":100}, {"b":100}),
- ({"A":100, "C":100, "c":100}, {"c":100}),
- ({"B":100, "C":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"B":100, "C":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"B":100, "C":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"B":100, "C":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"B":100, "C":100, "a":100}, {"a":100}),
- ({"B":100, "C":100, "b":100}, {"b":100}),
- ({"B":100, "C":100, "c":100}, {"c":100}),
- ({"A":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"A":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"A":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"A":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"A":100, "a":100}, {"a":100}),
- ({"A":100, "b":100}, {"b":100}),
- ({"A":100, "c":100}, {"c":100}),
- ({"B":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"B":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"B":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"B":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"B":100, "a":100}, {"a":100}),
- ({"B":100, "b":100}, {"b":100}),
- ({"B":100, "c":100}, {"c":100}),
- ({"C":100, "a":100, "b":100, "c":100}, {"a":100, "b":100, "c":100}),
- ({"C":100, "b":100, "c":100}, {"b":100, "c":100}),
- ({"C":100, "a":100, "c":100}, {"a":100, "c":100}),
- ({"C":100, "a":100, "b":100}, {"a":100, "b":100}),
- ({"C":100, "a":100}, {"a":100}),
- ({"C":100, "b":100}, {"b":100}),
- ({"C":100, "c":100}, {"c":100}),
- ({"A":100, "B":100, "C":100}, {}),
- ({"B":100, "C":100}, {}),
- ({"A":100, "C":100}, {}),
- ({"A":100, "B":100}, {}),
- ({"A":100}, {}),
- ({"B":100}, {}),
- ({"C":100}, {}),
- ]
- def test_good_input(self):
- for input, expected in self.good_input:
- self.assertEqual(triangulo.get_known_angles(**input), expected)
- if __name__ == "__main__":
- unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement