def test_error_messages(self): """ Testing to see if error messages work """ r1 = Rectangle(1, 2) with self.assertRaisesRegexp(TypeError, "width must be an integer"): r1.width = True with self.assertRaisesRegexp(TypeError, "width must be an integer"): r1.width = "str" with self.assertRaisesRegexp(TypeError, "height must be an integer"): r1.height = "rts" with self.assertRaisesRegexp(TypeError, "height must be an integer"): r1.height = True with self.assertRaisesRegexp(ValueError, "width must be > 0"): r1.width = -3 with self.assertRaisesRegexp(ValueError, "height must be > 0"): r1.height = -4 with self.assertRaisesRegexp(ValueError, "x must be >= 0"): r1.x = -3 with self.assertRaisesRegexp(TypeError, "x must be an integer"): r1.x = True with self.assertRaisesRegexp(TypeError, "x must be an integer"): r1.x = "str" with self.assertRaisesRegexp(ValueError, "y must be >= 0"): r1.y = -4 with self.assertRaisesRegexp(TypeError, "y must be an integer"): r1.y = True with self.assertRaisesRegexp(TypeError, "y must be an integer"): r1.y = "rts" with self.assertRaisesRegexp(ValueError, "width must be > 0"): r1.width = 0 with self.assertRaisesRegexp(ValueError, "height must be > 0"): r1.height = 0
def test_height_setter_validations(self): """Tests for height setter methods""" rectangle_obj1 = Rectangle(3, 10, 0, 0, 10) with self.assertRaises(ValueError): rectangle_obj1.height = 0 with self.assertRaises(ValueError): rectangle_obj1.height = -4 with self.assertRaises(TypeError): rectangle_obj1.height = True rectangle_obj1.height = 3 self.assertEqual(rectangle_obj1.height, 3)
def test_height_property_and_setter(self): """test for height setter """ r = Rectangle(1, 1) with self.assertRaises(TypeError): r.height = "r" with self.assertRaises(ValueError): r.height = -1 with self.assertRaises(ValueError): r.height = 0
def test_height(self): r3 = Rectangle(10, 2) # check an exception is raised when trying to access # a private attribute with self.assertRaises(AttributeError): print(r3.__height) # check an exception is raised when height not an int with self.assertRaises(TypeError, msg="height must be an integer"): r3.height = 'hi' # check an exception is raised when height is less than 0 or 0 with self.assertRaises(ValueError, msg="height must be > 0"): r3.height = 0
def test_height_not_int(self): """ Test's for y method """ r1 = Rectangle(3, 4, 0, 0) with self.assertRaises(TypeError): r1.height = "51"
def test_all(self): r1 = Rectangle(10, 2, 20, 30) # Check getter for height works self.assertEqual(r1.height, 2) # check setter for height works r1.height = 5 self.assertEqual(r1.height, 5) # Check getter for width works self.assertEqual(r1.width, 10) # check setter for width works r1.width = 12 self.assertEqual(r1.width, 12) # Check getter for x works self.assertEqual(r1.x, 20) # check setter for x works r1.x = 25 self.assertEqual(r1.x, 25) # Check getter for y works self.assertEqual(r1.y, 30) # check setter for y works r1.y = 35 self.assertEqual(r1.y, 35)
def test_str_method_attr(self): r = Rectangle(7, 8, 14, 12, [13]) r.width = 13 r.height = 11 r.x = 81 r.y = 100 self.assertEqual("[Rectangle] ([13]) 81/100 - 13/11", str(r))
def test_excep3(self): with self.assertRaises(ValueError): r5 = Rectangle(10, 2) r5.height = -10 self.g1.height = -10 self.g2.height = -10 self.g3.height = -10
def test_excep2(self): with self.assertRaises(TypeError): r5 = Rectangle(10, 2) r5.height = "8" self.g1.height = "8" self.g2.height = "8" self.g3.height = "8"
def test_heightsettervalidationfornegative(self): """This function tests height setter validation for 0""" Rectangle.reset_objects() with self.assertRaises(ValueError) as e: r1 = Rectangle(25, 20, 30, 35, 100) r1.height = -1 self.assertEqual(str(e.exception), 'height must be > 0')
def test_method_changed_attributes(self): r = Rectangle(12, 23, 67, 64, [5]) r.width = 75 r.height = 43 r.x = 13 r.y = 75 self.assertEqual("[Rectangle] ([5]) 13/75 - 75/43", str(r))
def test_str_method_changed_attributes(self): r = Rectangle(7, 7, 0, 0, [4]) r.width = 15 r.height = 1 r.x = 8 r.y = 10 self.assertEqual("[Rectangle] ([4]) 8/10 - 15/1", str(r))
def test_variables(self): r1 = Rectangle(2, 4, 6, 9, 10) self.assertEqual(r1.id, 10) self.assertEqual(r1.width, 2) self.assertEqual(r1.height, 4) self.assertEqual(r1.x, 6) self.assertEqual(r1.y, 9) r1.width = 7 self.assertEqual(r1.width, 7) r1.height = 11 self.assertEqual(r1.height, 11) r1.x = 8 self.assertEqual(r1.x, 8) r1.y = 5 self.assertEqual(r1.y, 5) """Error""" self.assertRaises(TypeError, Rectangle, "string", 3) self.assertRaises(TypeError, Rectangle, 4, "string") self.assertRaises(TypeError, Rectangle, 2, 4, "string") self.assertRaises(TypeError, Rectangle, 2, 4, 3, "string") self.assertRaises(TypeError, Rectangle) self.assertRaises(TypeError, Rectangle, 2) self.assertRaises(ValueError, Rectangle, -1, 3) self.assertRaises(ValueError, Rectangle, 4, -2) self.assertRaises(ValueError, Rectangle, 2, 4, -3) self.assertRaises(ValueError, Rectangle, 2, 4, 3, -4)
def try_wrong_case(self): """when a size can be 0 but it is not possible""" self.set_up() r2 = Rectangle(3, 1) self.assertEqual(r2.height, 1) with self.assertRaisesRegex(ValueError, "height must be > 0"): r2.height = 0
def test_heightsettervalidation(self): """This function tests height setter validation""" Rectangle.reset_objects() with self.assertRaises(TypeError) as e: r1 = Rectangle(25, 20, 30, 35, 100) r1.height = "foo" self.assertEqual(str(e.exception), 'height must be an integer')
def test_I_area(self): '''Tests area() method compuation.''' r = Rectangle(5, 6) self.assertEqual(r.area(), 30) w = randrange(10) + 1 h = randrange(10) + 1 r.width = w r.height = h self.assertEqual(r.area(), w * h) w = randrange(10) + 1 h = randrange(10) + 1 r = Rectangle(w, h, 7, 8, 9) self.assertEqual(r.area(), w * h) w = randrange(10) + 1 h = randrange(10) + 1 r = Rectangle(w, h, y=7, x=8, id=9) self.assertEqual(r.area(), w * h) r1 = Rectangle(3, 2) self.assertEqual(r1.area(), 6) r2 = Rectangle(2, 10) self.assertEqual(r2.area(), 20) r3 = Rectangle(8, 7, 0, 0, 12) self.assertEqual(r3.area(), 56)
def test_height_get_set(self): r = Rectangle(2, 4, 1, 2) with self.assertRaises(AttributeError): r.__height self.assertEqual(r.height, 4) r.height = 42 self.assertEqual(r.height, 42)
def test_two_update(self): r = Rectangle(10, 10, 3, 10, 10) r.update(13) r.height = 53 r.update(5) r.id = 32 self.assertEqual("[Rectangle] (32) 3/10 - 10/53", str(r))
def test_print(self): r = Rectangle(1, 1) f = io.StringIO() with redirect_stdout(f): r.display() s = "#\n" self.assertEqual(f.getvalue(), s) r.width = 3 r.height = 5 f = io.StringIO() with redirect_stdout(f): r.display() s = "\ ###\n\ ###\n\ ###\n\ ###\n\ ###\n\ " self.assertEqual(f.getvalue(), s) r = Rectangle(5, 6, 7, 8) f = io.StringIO() with redirect_stdout(f): r.display()
def test_dictionary(self): with self.assertRaises(TypeError) as e: Rectangle.to_dictionary() s = "to_dictionary() missing 1 required positional argument: 'self'" self.assertEqual(str(e.exception), s) r = Rectangle(1, 2) d = {'x': 0, 'y': 0, 'width': 1, 'id': 1, 'height': 2} self.assertEqual(r.to_dictionary(), d) r = Rectangle(1, 2, 3, 4, 5) d = {'x': 3, 'y': 4, 'width': 1, 'id': 5, 'height': 2} self.assertEqual(r.to_dictionary(), d) r.x = 10 r.y = 20 r.width = 30 r.height = 40 d = {'x': 10, 'y': 20, 'width': 30, 'id': 5, 'height': 40} self.assertEqual(r.to_dictionary(), d) r1 = Rectangle(10, 2, 1, 9) r1_dictionary = r1.to_dictionary() r2 = Rectangle(1, 1) r2.update(**r1_dictionary) self.assertEqual(str(r1), str(r2)) self.assertNotEqual(r1, r2)
def test_trivial(self): """ Function: test_trivial to test trivial cases """ Base._nb_objects = 0 r1 = Rectangle(10, 2) r2 = Rectangle(2, 10) r3 = Rectangle(10, 2, 0, 0, 12) r4 = Rectangle(10, 2, 0, 0, None) self.assertEqual(r1.id, 1) self.assertEqual(r2.id, 2) self.assertEqual(r3.id, 12) self.assertEqual(r4.id, 3) self.assertEqual(r1.area(), 20) self.assertEqual(r2.area(), 20) self.assertEqual(r3.area(), 20) self.assertEqual(r4.area(), 20) x = r1.x y = r1.y width = r1.width height = r1.height self.assertEqual(x, 0) self.assertEqual(y, 0) self.assertEqual(width, 10) self.assertEqual(height, 2) x = r2.x y = r2.y width = r2.width height = r2.height self.assertEqual(x, 0) self.assertEqual(y, 0) self.assertEqual(width, 2) self.assertEqual(height, 10) x = r3.x y = r3.y width = r3.width height = r3.height self.assertEqual(x, 0) self.assertEqual(y, 0) self.assertEqual(width, 10) self.assertEqual(height, 2) x = r4.x y = r4.y width = r4.width height = r4.height self.assertEqual(x, 0) self.assertEqual(y, 0) self.assertEqual(width, 10) self.assertEqual(height, 2) r4.x = 24 self.assertEqual(r4.x, 24) r3.y = 55 self.assertEqual(r3.y, 55) r2.width = 97 self.assertEqual(r2.width, 97) r1.height = 33 self.assertEqual(r1.height, 33)
def test_width_height_morethan0(self): """Test if width or height > 0""" with self.assertRaisesRegex(ValueError, "width must be > 0"): r3 = Rectangle(10, 2) r3.width = -10 with self.assertRaisesRegex(ValueError, "height must be > 0"): r4 = Rectangle(10, 5) r4.height = -10
def test_Value(self): r = Rectangle(10, 2) with self.assertRaises(ValueError): r.height = -2 r.height = 0 r.width = -1 r.width = 0 r.x = "" r.x = {} r.x = [] r.x = () r.x = 1.2 r.y = "" r.y = {} r.y = [] r.y = () r.y = 1.2
def test_area_validations(self): """Tests for area method""" rectangle_obj2 = Rectangle(8, 2, 1, 1, 7) self.assertEqual(rectangle_obj2.area(), 16) with self.assertRaises(TypeError): rectangle_obj2.area(45) rectangle_obj2.height = 8 self.assertEqual(rectangle_obj2.area(), 64)
def test_area_2(self): """ Checking the return value of area method """ new = Rectangle(2, 2) self.assertEqual(new.area(), 4) new.width = 5 self.assertEqual(new.area(), 10) new.height = 5 self.assertEqual(new.area(), 25)
def test_height(self): """ Test's for height method """ r1 = Rectangle(3, 4, 0, 0) r1.height = 5191 self.assertTrue(Rectangle.height.__doc__) self.assertEqual(r1.height, 5191)
def test_setter_getter(self): r1 = Rectangle(1, 2) self.assertEqual(r1.width, 1) self.assertEqual(r1.height, 2) r1.width = 7 r1.height = 8 self.assertEqual(r1.width, 7) self.assertEqual(r1.height, 8)
def test_x_and_y(self): r = Rectangle(5, 10) self.assertEqual(r.width, 5) self.assertEqual(r.height, 10) r.width = 10 r.height = 5 self.assertEqual(r.width, 10) self.assertEqual(r.height, 5) del r
def test_area(self): """ check if the area is calculate correctly """ r5 = Rectangle(2, 3, 4, 5) self.assertEqual(r5.area(), 6) r5.width = 1 self.assertEqual(r5.area(), 3) r5.height = 1 self.assertEqual(r5.area(), 1)
def test_rectangle_display(self): r = Rectangle(1, 1) with redirect_stdout(io.StringIO()) as f: r.display() self.assertEqual("#\n", f.getvalue()) r.height = 2 with redirect_stdout(io.StringIO()) as f: r.display() self.assertEqual("#\n#\n", f.getvalue()) r.width = 5 with redirect_stdout(io.StringIO()) as f: r.display() self.assertEqual("#####\n#####\n", f.getvalue()) r.height = 5 with redirect_stdout(io.StringIO()) as f: r.display() self.assertEqual("#####\n#####\n#####\n#####\n#####\n", f.getvalue()) r = Rectangle(5, 2, 3, 3) with redirect_stdout(io.StringIO()) as f: r.display() answer = ("\n\n\n" + " #####\n" + " #####\n") self.assertEqual(answer, f.getvalue()) r.width = 2 r.y = 0 with redirect_stdout(io.StringIO()) as f: r.display() answer = (" ##\n" + " ##\n") self.assertEqual(answer, f.getvalue()) r.height = 4 r.y = 1 with redirect_stdout(io.StringIO()) as f: r.display() answer = ("\n" + " ##\n" + " ##\n" + " ##\n" + " ##\n") self.assertEqual(answer, f.getvalue()) with self.assertRaises(TypeError): r.display(4, 4)