Example #1
0
    def testValidConstruction(self):
        p1 = Point(0, 0)
        p2 = Point(2, 0)
        p3 = Point(0, 1)
        p4 = Point(3, 0)
        p5 = Point(0, 2)
        e1 = Ellipse(p1, p2, p3, p4, p5)

        self.assertEqual(p1, e1.center)
        self.assertEqual(p2, e1.focus1)
        self.assertEqual(p3, e1.focus2)
        self.assertEqual(p4, e1.edge1)
        self.assertEqual(p5, e1.edge2)

        e2 = Ellipse(1, 1, 4, 4, -2, 4, 6, 6, -2, 4)
        self.assertEqual(1, e2.center.x)
        self.assertEqual(1, e2.center.y)
        self.assertEqual(4, e2.focus1.x)
        self.assertEqual(4, e2.focus1.y)
        self.assertEqual(-2, e2.focus2.x)
        self.assertEqual(4, e2.focus2.y)
        self.assertEqual(6, e2.edge1.x)
        self.assertEqual(6, e2.edge1.y)
        self.assertEqual(-2, e2.edge2.x)
        self.assertEqual(4, e2.edge2.y)
    def line_to_shape(self, line: str) -> Optional[Shape]:
        if Ellipse.is_valid_description(line):
            return Ellipse.parse_from_line(line)

        if Rectangle.is_valid_description(line):
            return Rectangle.parse_from_line(line)

        return None
Example #3
0
    def testValidateEllipse(self):
        e1 = ShapeFactory.build("ellipse", Point(0, 0), Point(3, 0),
                                Point(0, 2))
        Ellipse.validateEllipse(e1, "Ellipse unexpectedly invalid")

        self.assertRaises(
            ShapeException, Ellipse.validateEllipse, "(0, 0, 3, 0, 0, 2)",
            "String \'(0, 0, 3, 0, 0, 2)\' is not a valid ellipse")
        self.assertRaises(ShapeException, Ellipse.validateEllipse, Point(1, 1),
                          "Point is not a valid ellipse")
Example #4
0
    def testValidateEllipse(self):
        e1 = Ellipse(0, 0, 2, 0, 0, 1, 3, 0, 0, 2)
        Validator.validateEllipse(e1, "Ellipse unexpectedly invalid")

        self.assertRaises(
            ShapeException, Validator.validateEllipse,
            "(0, 0, 2, 0, 1, 0, 3, 0, 0, 2)",
            "String \'(0, 0, 2, 0, 0, 1, 3, 0, 0, 2)\' is not a valid ellipse")
        self.assertRaises(ShapeException, Validator.validateEllipse,
                          Point(1, 1), "Point is not a valid ellipse")
Example #5
0
    def testComputeArea(self):
        e1 = Ellipse(0, 0, 1, 0, 0, 1, 2, 0, 0, 2)

        self.assertAlmostEqual(12.566, e1.computeArea(), places=3)

        e2 = Ellipse(1, 1, 4, 4, -2, 4, 6, 6, -2, 4)

        self.assertAlmostEqual(94.248, e2.computeArea(), places=3)
    def add_shape(self, x: int, y: int) -> Shape:
        width = self.width_box.get()
        color = self.color_btn["bg"]
        background = self.background_btn["bg"]

        shape_type = self.type_box.get()

        if shape_type == "Ellipse":
            r1 = 10
            r2 = 10

            return Ellipse(x - r1, y - r2, r1, r2, width, color, background)

        if shape_type == "Rectangle":
            w = 20
            h = 20

            return Rectangle(x - w, y - h, w, h, width, color, background)
Example #7
0
    def testScale(self):
        e1 = Ellipse(0, 0, 1, 0, 0, 1, 2, 0, 0, 2)

        e1.scale(2)
        self.assertAlmostEqual(0, e1.center.x)
        self.assertAlmostEqual(0, e1.center.y)
        self.assertAlmostEqual(2, e1.focus1.x)
        self.assertAlmostEqual(0, e1.focus1.y)
        self.assertAlmostEqual(0, e1.focus2.x)
        self.assertAlmostEqual(2, e1.focus2.y)

        e2 = Ellipse(1, 1, 4, 4, -2, 4, 6, 6, -2, 4)

        e2.scale(1 / 3)
        self.assertAlmostEqual(1, e2.center.x)
        self.assertAlmostEqual(1, e2.center.y)
        self.assertAlmostEqual(2, e2.focus1.x)
        self.assertAlmostEqual(2, e2.focus1.y)
        self.assertAlmostEqual(0, e2.focus2.x)
        self.assertAlmostEqual(2, e2.focus2.y)
Example #8
0
    def testMove(self):
        e1 = Ellipse(1, 1, 4, 4, -2, 4, 6, 6, -2, 4)

        e1.move(3, 4)
        self.assertAlmostEqual(4, e1.center.x)
        self.assertAlmostEqual(5, e1.center.y)
        self.assertAlmostEqual(7, e1.focus1.x)
        self.assertAlmostEqual(8, e1.focus1.y)
        self.assertAlmostEqual(1, e1.focus2.x)
        self.assertAlmostEqual(8, e1.focus2.y)
        self.assertAlmostEqual(9, e1.edge1.x)
        self.assertAlmostEqual(10, e1.edge1.y)
        self.assertAlmostEqual(1, e1.edge2.x)
        self.assertAlmostEqual(8, e1.edge2.y)

        e1.move(-.234, -1.987)
        self.assertAlmostEqual(3.766, e1.center.x)
        self.assertAlmostEqual(3.013, e1.center.y)
        self.assertAlmostEqual(6.766, e1.focus1.x)
        self.assertAlmostEqual(6.013, e1.focus1.y)
        self.assertAlmostEqual(0.766, e1.focus2.x)
        self.assertAlmostEqual(6.013, e1.focus2.y)
        self.assertAlmostEqual(8.766, e1.edge1.x)
        self.assertAlmostEqual(8.013, e1.edge1.y)
        self.assertAlmostEqual(.766, e1.edge2.x)
        self.assertAlmostEqual(6.013, e1.edge2.y)

        e1.move(.234, 1.987)
        self.assertAlmostEqual(4, e1.center.x)
        self.assertAlmostEqual(5, e1.center.y)
        self.assertAlmostEqual(7, e1.focus1.x)
        self.assertAlmostEqual(8, e1.focus1.y)
        self.assertAlmostEqual(1, e1.focus2.x)
        self.assertAlmostEqual(8, e1.focus2.y)
        self.assertAlmostEqual(9, e1.edge1.x)
        self.assertAlmostEqual(10, e1.edge1.y)
        self.assertAlmostEqual(1, e1.edge2.x)
        self.assertAlmostEqual(8, e1.edge2.y)
Example #9
0
    def validateCircle(value, errorMessage):
        Ellipse.validateEllipse(value, errorMessage)

        if value.axis1.computeLength() != value.axis2.computeLength():
            raise ShapeException(errorMessage)
Example #10
0
from shapes.rectangle import Rectangle
from shapes.square import Square
from shape_list.shape_list import ShapeList
from color.color import Color

shape_list = ShapeList()

try:
    shape_list.append(1)
except TypeError:
    print('Only shape append support')

shape_list.append(Circle(5, Color.BLUE))
shape_list.append(Rectangle(2, 3, Color.RED))
shape_list.append(Square(5, Color.BLUE))
shape_list.append(Ellipse(2, 3, Color.GREEN))

print(shape_list)
print(shape_list.sorted_shapes_areas(Color.BLUE))
print(Ellipse(4, 5, Color.BLUE).__hash__())
print(Ellipse(4, 5, Color.RED).__hash__())
print(Ellipse(5, 4, Color.BLUE).__hash__())
a = Circle(4, Color.BLUE)
d = Circle(4, Color.BLUE)
b = Circle(4, Color.RED)
c = Ellipse(4, 5, Color.BLUE)
print(a == c)  #False
print(a == b)  #False
print(a == d)  #True

if a == d: