def test_bridge_shall_draw_with_concrete_api_implementation(cls): ci1 = DrawingAPI1() ci2 = DrawingAPI2() with patch.object(ci1, 'draw_circle') as mock_ci1_draw_circle, patch.object( ci2, 'draw_circle') as mock_ci2_draw_circle: sh1 = CircleShape(1, 2, 3, ci1) sh1.draw() cls.assertEqual(mock_ci1_draw_circle.call_count, 1) sh2 = CircleShape(1, 2, 3, ci2) sh2.draw() cls.assertEqual(mock_ci2_draw_circle.call_count, 1)
def test_bridge_shall_scale_both_api_circles_with_own_implementation(cls): SCALE_FACTOR = 2 CIRCLE1_RADIUS = 3 EXPECTED_CIRCLE1_RADIUS = 6 CIRCLE2_RADIUS = CIRCLE1_RADIUS * CIRCLE1_RADIUS EXPECTED_CIRCLE2_RADIUS = CIRCLE2_RADIUS * SCALE_FACTOR ci1 = DrawingAPI1() ci2 = DrawingAPI2() sh1 = CircleShape(1, 2, CIRCLE1_RADIUS, ci1) sh2 = CircleShape(1, 2, CIRCLE2_RADIUS, ci2) sh1.scale(SCALE_FACTOR) sh2.scale(SCALE_FACTOR) cls.assertEqual(sh1._radius, EXPECTED_CIRCLE1_RADIUS) cls.assertEqual(sh2._radius, EXPECTED_CIRCLE2_RADIUS) with patch.object(sh1, 'scale') as mock_sh1_scale_circle, patch.object(sh2, 'scale') as mock_sh2_scale_circle: sh1.scale(2) sh2.scale(2) cls.assertEqual(mock_sh1_scale_circle.call_count, 1) cls.assertEqual(mock_sh2_scale_circle.call_count, 1)
def test_bridge_shall_draw_with_concrete_api_implementation(cls): ci1 = DrawingAPI1() ci2 = DrawingAPI2() with patch.object(ci1, 'draw_circle') as mock_ci1_draw_circle, patch.object( ci2, 'draw_circle' ) as mock_ci2_draw_circle: sh1 = CircleShape(1, 2, 3, ci1) sh1.draw() cls.assertEqual(mock_ci1_draw_circle.call_count, 1) sh2 = CircleShape(1, 2, 3, ci2) sh2.draw() cls.assertEqual(mock_ci2_draw_circle.call_count, 1)
def test_bridge_shall_scale_both_api_circles_with_own_implementation(cls): SCALE_FACTOR = 2 CIRCLE1_RADIUS = 3 EXPECTED_CIRCLE1_RADIUS = 6 CIRCLE2_RADIUS = CIRCLE1_RADIUS * CIRCLE1_RADIUS EXPECTED_CIRCLE2_RADIUS = CIRCLE2_RADIUS * SCALE_FACTOR ci1 = DrawingAPI1() ci2 = DrawingAPI2() sh1 = CircleShape(1, 2, CIRCLE1_RADIUS, ci1) sh2 = CircleShape(1, 2, CIRCLE2_RADIUS, ci2) sh1.scale(SCALE_FACTOR) sh2.scale(SCALE_FACTOR) cls.assertEqual(sh1._radius, EXPECTED_CIRCLE1_RADIUS) cls.assertEqual(sh2._radius, EXPECTED_CIRCLE2_RADIUS) with patch.object(sh1, 'scale') as mock_sh1_scale_circle, patch.object( sh2, 'scale') as mock_sh2_scale_circle: sh1.scale(2) sh2.scale(2) cls.assertEqual(mock_sh1_scale_circle.call_count, 1) cls.assertEqual(mock_sh2_scale_circle.call_count, 1)