def set_vertices(self, vertices): self.vertices_list = vertices all_vertices_are_digits = sum([is_valid(vert) for vert in vertices]) if (all_vertices_are_digits == 6): self.triangle = Triangle(float(vertices[0]), float(vertices[1]), float(vertices[2]), float(vertices[3]), float(vertices[4]), float(vertices[5])) self.validate_text() else: self.set_btn_disabled()
def validate_text(self): is_triangle = False if ('' not in self.vertices_list): is_triangle = Triangle.is_triangle(self.triangle) if is_triangle: self.set_btn_enabled() else: self.set_btn_disabled()
def test_get_area_valid_triangle(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.get_area(test_triangle), 6)
def test_check_invalid_triangle(self): test_triangle = Triangle(0, 0, 0, 1, 0, 2) self.assertEqual(Triangle.is_triangle(test_triangle), False)
class TriangleViewModel: def __init__(self): self.vertices_list = [] self.answer = '' self.operation = 'get ab' self.set_btn_disabled() def get_vertices(self): return self.vertices_list def set_vertices(self, vertices): self.vertices_list = vertices all_vertices_are_digits = sum([is_valid(vert) for vert in vertices]) if (all_vertices_are_digits == 6): self.triangle = Triangle(float(vertices[0]), float(vertices[1]), float(vertices[2]), float(vertices[3]), float(vertices[4]), float(vertices[5])) self.validate_text() else: self.set_btn_disabled() def set_answer(self, answer_str): self.answer = answer_str def get_button_convert_state(self): return self.button_convert_state def set_btn_enabled(self): self.button_convert_state = 'normal' def set_btn_disabled(self): self.button_convert_state = 'disabled' def get_answer(self): return self.answer def validate_text(self): is_triangle = False if ('' not in self.vertices_list): is_triangle = Triangle.is_triangle(self.triangle) if is_triangle: self.set_btn_enabled() else: self.set_btn_disabled() def set_operation(self, operation): self.operation = operation def click_button(self): if self.operation == 'get ab': self.set_answer(str(self.triangle.get_ab())) elif self.operation == 'get bc': self.set_answer(str(self.triangle.get_bc())) elif self.operation == 'get ca': self.set_answer(str(self.triangle.get_ca())) elif self.operation == 'get area': self.set_answer(str(self.triangle.get_area())) elif self.operation == 'get perimeter': self.set_answer(str(self.triangle.get_perimeter())) elif self.operation == 'get circumcircle': self.set_answer(str(self.triangle.get_circumcircle_center()) + ' ' + str( self.triangle.get_circumcircle_radius())) elif self.operation == 'get incircle': self.set_answer(str(self.triangle.get_incircle_center()) + ' ' + str( self.triangle.get_incircle_radius())) elif self.operation == 'get side type': self.set_answer(str(self.triangle.get_triangle_type_by_sides())) elif self.operation == 'get angle type': self.set_answer(str(self.triangle.get_triangle_type_by_angles()))
def test_get_incircle_center_0006372_valid_triangle(self): test_triangle = Triangle(0, 0, 6, 0, 3, 7.2) self.assertTrue((Triangle.get_incircle_center(test_triangle)[0] - 3.0) <= 1e-10 and (Triangle.get_incircle_center(test_triangle)[1] - 2.0) <= 1e-10)
def test_check_constructor(self): test_triangle = Triangle(1, 1, 1, 0, 2, 1) self.assertTrue(test_triangle.x1 == 1 and test_triangle.x2 == 1 and test_triangle.x3 == 2)
def test_get_incircle_radius_valid_triangle(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.get_incircle_radius(test_triangle), 1.0)
def test_get_circumcircle_radius_invalid_triangle(self): test_triangle = Triangle(0, 0, 0, 1, 0, 2) with self.assertRaises(TriangleError): Triangle.get_circumcircle_radius(test_triangle)
def test_get_type_by_angle_acute(self): test_triangle = Triangle(1, 1, 2, math.sqrt(3) + 1, 3, 1) self.assertEqual(Triangle.get_triangle_type_by_angles(test_triangle), "acute")
def test_get_type_by_side_various(self): test_triangle = Triangle(0, 0, 0, 1, 2, 0) self.assertEqual(Triangle.get_triangle_type_by_sides(test_triangle), "various")
def test_get_type_by_side_isosceles(self): test_triangle = Triangle(0, 0, 0, 1, 1, 0) self.assertEqual(Triangle.get_triangle_type_by_sides(test_triangle), "isosceles")
def test_get_type_by_side_equilateral(self): test_triangle = Triangle(1, 1, 2, math.sqrt(3) + 1, 3, 1) self.assertEqual(Triangle.get_triangle_type_by_sides(test_triangle), "equilateral")
def test_get_area_invalid_triangle(self): test_triangle = Triangle(0, 0, 0, 1, 0, 2) with self.assertRaises(TriangleError): Triangle.get_area(test_triangle)
def test_get_type_by_angle_right(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.get_triangle_type_by_angles(test_triangle), "right")
def test_get_perimeter_valid_triangle(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.get_perimeter(test_triangle), 12)
def test_get_type_by_angle_obtuse(self): test_triangle = Triangle(0, 0, 0, 3, 4, -1) self.assertEqual(Triangle.get_triangle_type_by_angles(test_triangle), "obtuse")
def test_get_circumcircle_center_145221_valid_triangle(self): test_triangle = Triangle(1, 4, 5, 2, 2, 1) self.assertTrue((Triangle.get_circumcircle_center(test_triangle)[0] - 3.0) <= 1e-10 and (Triangle.get_circumcircle_center(test_triangle)[1] - 3.0) <= 1e-10)
def test_get_type_by_andle_invalid_triangle(self): test_triangle = Triangle(0, 0, 0, 1, 0, 2) with self.assertRaises(TriangleError): Triangle.get_triangle_type_by_angles(test_triangle)
def test_get_incircle_radius_0006372_valid_triangle(self): test_triangle = Triangle(0, 0, 6, 0, 3, 7.2) self.assertEqual(Triangle.get_incircle_radius(test_triangle), 2.0)
def test_get_ca(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.get_ca(test_triangle), 4)
def test_get_incircle_center_valid_triangle(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertTrue((Triangle.get_incircle_center(test_triangle)[0] - 1.0) <= 1e-10 and (Triangle.get_incircle_center(test_triangle)[1] - 1.0) <= 1e-10)
def test_check_valid_triangle(self): test_triangle = Triangle(0, 0, 0, 3, 4, 0) self.assertEqual(Triangle.is_triangle(test_triangle), True)
def test_get_incircle_center_invalid_triangle(self): test_triangle = Triangle(0, 0, 0, 1, 0, 2) with self.assertRaises(TriangleError): Triangle.get_incircle_center(test_triangle)
class TriangleViewModel: def __init__(self, logger=RealLogger()): self.logger = logger self.vertices_list = [] self.answer = '' self.operation = 'get ab' self.set_btn_disabled() self.logger.log('Welcome!') def get_vertices(self): return self.vertices_list def set_vertices(self, vertices): self.vertices_list = vertices all_vertices_are_digits = sum([is_valid(vert) for vert in vertices]) if (all_vertices_are_digits == 6): self.triangle = Triangle(float(vertices[0]), float(vertices[1]), float(vertices[2]), float(vertices[3]), float(vertices[4]), float(vertices[5])) self.validate_text() self.logger.log( 'Setting vertices to ({}, {}) ({}, {}) ({}, {})'.format( float(vertices[0]), float(vertices[1]), float(vertices[2]), float(vertices[3]), float(vertices[4]), float(vertices[5]))) else: self.set_btn_disabled() def set_answer(self, answer_str): self.answer = answer_str self.logger.log('Result: %s' % self.answer) def get_button_convert_state(self): return self.button_convert_state def set_btn_enabled(self): self.button_convert_state = 'normal' self.logger.log('Button enabled!') def set_btn_disabled(self): self.button_convert_state = 'disabled' self.logger.log('Button disabled!') def get_answer(self): return self.answer def validate_text(self): is_triangle = False if ('' not in self.vertices_list): is_triangle = Triangle.is_triangle(self.triangle) if is_triangle: self.set_btn_enabled() else: self.set_btn_disabled() def set_operation(self, operation): self.operation = operation self.logger.log('Operation set to \'{}\''.format(operation)) def click_button(self): if self.operation == 'get ab': self.set_answer(str(self.triangle.get_ab())) elif self.operation == 'get bc': self.set_answer(str(self.triangle.get_bc())) elif self.operation == 'get ca': self.set_answer(str(self.triangle.get_ca())) elif self.operation == 'get area': self.set_answer(str(self.triangle.get_area())) elif self.operation == 'get perimeter': self.set_answer(str(self.triangle.get_perimeter())) elif self.operation == 'get circumcircle': self.set_answer( str(self.triangle.get_circumcircle_center()) + ' ' + str(self.triangle.get_circumcircle_radius())) elif self.operation == 'get incircle': self.set_answer( str(self.triangle.get_incircle_center()) + ' ' + str(self.triangle.get_incircle_radius())) elif self.operation == 'get side type': self.set_answer(str(self.triangle.get_triangle_type_by_sides())) elif self.operation == 'get angle type': self.set_answer(str(self.triangle.get_triangle_type_by_angles())) self.logger.log('Click on button')