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_y_property_and_setter(self): """test for y setter """ r = Rectangle(1, 1) with self.assertRaises(TypeError): r.y = "x" with self.assertRaises(ValueError): r.y = -10
def test_y_setter_validations(self): """Tests for y setter methods""" rectangle_obj1 = Rectangle(3, 4, 0, 0, 10) with self.assertRaises(ValueError): rectangle_obj1.y = -4 with self.assertRaises(TypeError): rectangle_obj1.y = 'Ho' rectangle_obj1.y = 10 self.assertEqual(rectangle_obj1.y, 10)
def test_y(self): r5 = Rectangle(10, 2) # check an exception is raised when trying to access # a private attribute with self.assertRaises(AttributeError): print(r5.__y) # check an exception is raised when y not an int with self.assertRaises(TypeError, msg="y must be an integer"): r5.y = 'hi' # check an exception is raised when y is less than 0 with self.assertRaises(ValueError, msg="y must be >= 0"): r5.y = -1
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_excep5(self): with self.assertRaises(ValueError): r5 = Rectangle(10, 2) r5.y = -10 self.g1.y = -10 self.g2.y = -10 self.g3.y = -10
def test_excep2(self): with self.assertRaises(TypeError): r5 = Rectangle(10, 2) r5.y = "8" self.g1.y = "8" self.g2.y = "8" self.g3.y = "8"
def test_16_property_range_zero(self): '''@property set/get''' r = Rectangle(1, 2) r.x = 0 r.y = 0 self.assertEqual(r.x, 0) self.assertEqual(r.y, 0)
def test_y_not_int(self): """ Test's for y method """ r1 = Rectangle(3, 4, 0, 0) with self.assertRaises(TypeError): r1.y = "51"
def test_ysettervalidationfornegative(self): """This function tests width setter validation for 0""" Rectangle.reset_objects() with self.assertRaises(ValueError) as e: r1 = Rectangle(25, 20, 30, 35, 100) r1.y = -1 self.assertEqual(str(e.exception), 'y 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_position(self): """ check if the position x y y are validates and sets correctly """ r4 = Rectangle(10, 2) self.assertEqual(r4.x, 0) self.assertEqual(r4.y, 0) r4 = Rectangle(10, 2, 10) self.assertEqual(r4.x, 10) self.assertEqual(r4.y, 0) r4 = Rectangle(10, 2, 10, 2) self.assertEqual(r4.x, 10) self.assertEqual(r4.y, 2) r4.x = 13 r4.y = 8 self.assertEqual(r4.x, 13) self.assertEqual(r4.y, 8) self.assertRaises(TypeError, Rectangle, 10, 10, "e", 10) self.assertRaises(TypeError, Rectangle, 10, 10, 0, "10") self.assertRaises(ValueError, Rectangle, 10, 10, -8, 10) self.assertRaises(ValueError, Rectangle, 10, 10, 10, -1)
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 test_17_property_range_zero(self): """Tests property setting/getting.""" r = Rectangle(1, 2) r.x = 0 r.y = 0 self.assertEqual(r.x, 0) self.assertEqual(r.y, 0)
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_setted_values(self): """Test for setted attributes""" r = Rectangle(1, 2) r.x = 5 r.y = 10 self.assertEqual(r.x, 5) self.assertEqual(r.y, 10)
def test_H_property_range_zero(self): '''Tests property setting/getting.''' r = Rectangle(1, 2) r.x = 0 r.y = 0 self.assertEqual(r.x, 0) self.assertEqual(r.y, 0)
def test_y_get_set(self): r = Rectangle(2, 4, 1, 2) with self.assertRaises(AttributeError): r.__y self.assertEqual(r.y, 2) r.y = 42 self.assertEqual(r.y, 42)
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_y(self): """ Test's for y method """ r1 = Rectangle(3, 4, 0, 0) r1.y = 5191 self.assertTrue(Rectangle.y.__doc__) self.assertEqual(r1.y, 5191)
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_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)
def test_aa_setters(self): gt = Rectangle(4, 5, 8, 1, 20) gt.width = 30 self.assertEqual(gt.width, 30) gt.height = 33 self.assertEqual(gt.height, 33) gt.x = 56 self.assertEqual(gt.x, 56) gt.y = 14 self.assertEqual(gt.y, 14)
def test_xydisplay1(self): """ Display XY """ r1 = Rectangle(2, 3, 1, 2) r1.x = 2 r1.y = 3 dp = "\n\n\n ##\n ##\n ##\n" with patch('sys.stdout', new=io.StringIO()) as p: r1.display() st = p.getvalue() self.assertEqual(st, dp)
def test_params_setters(self): r9 = Rectangle(32, 34) r9.width = 21 self.assertEqual(r9.width, 21) r9.height = 87 self.assertEqual(r9.height, 87) r9.x = 55 self.assertEqual(r9.x, 55) r9.y = 444 self.assertEqual(r9.y, 444)
def test_args_setter(self): """check args setter""" A = Rectangle(3, 2) A.width = 1 self.assertEqual(A.width, 1) A.height = 5 self.assertEqual(A.height, 5) A.x = 10 self.assertEqual(A.x, 10) A.y = 20 self.assertEqual(A.y, 20)
def test_setters_ok(self): """ Test for setters with good values. """ r1 = Rectangle(1, 5) r1.width = 2 r1.height = 6 r1.x = 3 r1.y = 4 self.assertEqual(r1.width, 2) self.assertEqual(r1.height, 6) self.assertEqual(r1.x, 3) self.assertEqual(r1.y, 4)
def test_display(self): """ check if the display function show the rectangle correctly """ r6 = Rectangle(1, 1) expected_out = '#\n' with patch('sys.stdout', new=StringIO()) as fake_out: r6.display() self.assertEqual(fake_out.getvalue(), expected_out) r6.width = 2 r6.height = 3 expected_out = '##\n##\n##\n' with patch('sys.stdout', new=StringIO()) as fake_out: r6.display() self.assertEqual(fake_out.getvalue(), expected_out) r6.x = 1 r6.y = 3 expected_out = '\n\n\n ##\n ##\n ##\n' with patch('sys.stdout', new=StringIO()) as fake_out: r6.display() self.assertEqual(fake_out.getvalue(), expected_out) r6.x = 1 r6.y = 0 expected_out = ' ##\n ##\n ##\n' with patch('sys.stdout', new=StringIO()) as fake_out: r6.display() self.assertEqual(fake_out.getvalue(), expected_out) r6.x = 4 r6.y = 1 r6.width = 1 r6.height = 1 expected_out = '\n #\n' with patch('sys.stdout', new=StringIO()) as fake_out: r6.display() self.assertEqual(fake_out.getvalue(), expected_out)