Beispiel #1
0
    def testValidateCircle(self):
        c1 = ShapeFactory.build("circle", Point(0, 0), Point(2, 0), Point(0, 2))
        Circle.validateCircle(c1, "Circle unexpectedly invalid")

        self.assertRaises(ShapeException, Circle.validateCircle, "(0, 0, 2, 0, 0, 2)",
                          "String \'(0, 0, 2, 0, 0, 2)\' is not a valid circle")
        self.assertRaises(ShapeException, Circle.validateCircle, Point(1, 1), "Point is not a valid circle")
Beispiel #2
0
    def testMove(self):
        t1 = ShapeFactory.build("triangle", Point(1, 2), Point(5, 1), Point(3, 3))

        t1.move(3, 4)
        self.assertEqual(4, t1.point1.x)
        self.assertEqual(6, t1.point1.y)
        self.assertEqual(8, t1.point2.x)
        self.assertEqual(5, t1.point2.y)
        self.assertEqual(6, t1.point3.x)
        self.assertEqual(7, t1.point3.y)

        t1.move(.4321, .7654)
        self.assertEqual(4.4321, t1.point1.x)
        self.assertEqual(6.7654, t1.point1.y)
        self.assertEqual(8.4321, t1.point2.x)
        self.assertEqual(5.7654, t1.point2.y)
        self.assertEqual(6.4321, t1.point3.x)
        self.assertEqual(7.7654, t1.point3.y)

        t1.move(-.4321, -.7654)
        self.assertEqual(4, t1.point1.x)
        self.assertEqual(6, t1.point1.y)
        self.assertEqual(8, t1.point2.x)
        self.assertEqual(5, t1.point2.y)
        self.assertEqual(6, t1.point3.x)
        self.assertEqual(7, t1.point3.y)
Beispiel #3
0
    def testValidConstruction(self):
        p1 = Point(1, 3)
        p2 = Point(5, 3)
        p3 = Point(5, 1)
        p4 = Point(1, 1)
        r1 = Rectangle(p1, p2, p3, p4)

        self.assertEqual(p1, r1.point1)
        self.assertEqual(p2, r1.point2)
        self.assertEqual(p3, r1.point3)
        self.assertEqual(p4, r1.point4)

        l1 = Line(-3, 1, 1, 1)
        l2 = Line(1, 1, 1, -5)
        l3 = Line(1, -5, -3, -5)
        l4 = Line(-3, -5, -3, 1)
        r2 = Rectangle(l1, l2, l3, l4)

        self.assertEqual(l1, r2.line1)
        self.assertEqual(l2, r2.line2)
        self.assertEqual(l3, r2.line3)
        self.assertEqual(l4, r2.line4)

        r3 = Rectangle(-.8, .4, 0, 2, .8, 1.6, 0, 0)
        self.assertEqual(-.8, r3.point1.x)
        self.assertEqual(.4, r3.point1.y)
        self.assertEqual(0, r3.point2.x)
        self.assertEqual(2, r3.point2.y)
        self.assertEqual(.8, r3.point3.x)
        self.assertEqual(1.6, r3.point3.y)
        self.assertEqual(0, r3.point4.x)
        self.assertEqual(0, r3.point4.y)
Beispiel #4
0
    def testValidConstruction(self):
        p1 = Point(1, 2)
        p2 = Point(1, 1)
        p3 = Point(2, 1)
        t1 = Triangle(p1, p2, p3)

        self.assertEqual(p1, t1.point1)
        self.assertEqual(p2, t1.point2)
        self.assertEqual(p3, t1.point3)

        l1 = Line(4.33, 8, -4, 3.67)
        l2 = Line(-4, 3.67, 2.19, -5)
        l3 = Line(2.19, -5, 4.33, 8)
        t2 = Triangle(l1, l2, l3)

        self.assertEqual(l1, t2.line1)
        self.assertEqual(l2, t2.line2)
        self.assertEqual(l3, t2.line3)

        t3 = Triangle(1, 2, 5, 1, 3, 3)
        self.assertEqual(1, t3.point1.x)
        self.assertEqual(2, t3.point1.y)
        self.assertEqual(5, t3.point2.x)
        self.assertEqual(1, t3.point2.y)
        self.assertEqual(3, t3.point3.x)
        self.assertEqual(3, t3.point3.y)
Beispiel #5
0
    def testValidateTriangle(self):
        t1 = ShapeFactory.build("triangle", Point(1, 1), Point(-1, -5), Point(-3, -2))
        Triangle.validateTriangle(t1, "Triangle unexpectedly invalid")

        self.assertRaises(ShapeException, Triangle.validateTriangle, "(1, 1, -1, -5, -3, -2)",
                          "String \'(1, 1, -1, -5, -3, -2)\' is not a valid triangle")
        self.assertRaises(ShapeException, Triangle.validateTriangle, Point(1, 1), "Point is not a valid triangle")
    def testMove(self):
        r1 = ShapeFactory.build("rectangle", Point(-.8, .4), Point(0, 2),
                                Point(.8, 1.6), Point(0, 0))

        r1.move(3, 4)
        self.assertAlmostEqual(2.2, r1.point1.x)
        self.assertAlmostEqual(4.4, r1.point1.y)
        self.assertAlmostEqual(3, r1.point2.x)
        self.assertAlmostEqual(6, r1.point2.y)
        self.assertAlmostEqual(3.8, r1.point3.x)
        self.assertAlmostEqual(5.6, r1.point3.y)
        self.assertAlmostEqual(3, r1.point4.x)
        self.assertAlmostEqual(4, r1.point4.y)

        r1.move(-.234, -1.987)
        self.assertAlmostEqual(1.966, r1.point1.x)
        self.assertAlmostEqual(2.413, r1.point1.y)
        self.assertAlmostEqual(2.766, r1.point2.x)
        self.assertAlmostEqual(4.013, r1.point2.y)
        self.assertAlmostEqual(3.566, r1.point3.x)
        self.assertAlmostEqual(3.613, r1.point3.y)
        self.assertAlmostEqual(2.766, r1.point4.x)
        self.assertAlmostEqual(2.013, r1.point4.y)

        r1.move(.234, 1.987)
        self.assertAlmostEqual(2.2, r1.point1.x)
        self.assertAlmostEqual(4.4, r1.point1.y)
        self.assertAlmostEqual(3, r1.point2.x)
        self.assertAlmostEqual(6, r1.point2.y)
        self.assertAlmostEqual(3.8, r1.point3.x)
        self.assertAlmostEqual(5.6, r1.point3.y)
        self.assertAlmostEqual(3, r1.point4.x)
        self.assertAlmostEqual(4, r1.point4.y)
def drawCircle(graphics):
    p1 = Point(0, 0)
    p2 = Point(2, 0)
    p3 = Point(0, 2)
    c1 = ShapeFactory.build("circle", p1, p2, p3)
    c1.draw(graphics)
    graphics.show()
Beispiel #8
0
    def testValidateLine(self):
        l1 = ShapeFactory.build("line", Point(1, 1), Point(-1, -5))
        Line.validateLine(l1, "Line unexpectedly invalid")

        self.assertRaises(ShapeException, Line.validateLine, "(1, 1, -1, -5)",
                          "String \'(1, 1, -1, -5)\' is not a valid line")
        self.assertRaises(ShapeException, Line.validateLine, Point(1, 1), "Point is not a valid line")
Beispiel #9
0
 def testSaveToString(self):
     r1 = ShapeFactory.build("rectangle", Point(1, 1), Point(4, 1),
                             Point(4, 3), Point(1, 3))
     expected = r1.toString()
     testShapeIO = ShapeIO()
     actual = testShapeIO.saveShape(r1)
     self.assertEqual(expected, actual)
Beispiel #10
0
    def testValidConstruction(self):
        p1 = Point(0, 0)
        p2 = Point(2, 0)
        p3 = Point(0, 2)
        p4 = Point(3, 0)
        p5 = Point(0, 3)
        c1 = Circle(p1, p2, p3, p4, p5)

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

        c2 = Circle(1, 1, 4, 4, -2, 4, 6, 6, -4, 6)
        self.assertEqual(1, c2.center.x)
        self.assertEqual(1, c2.center.y)
        self.assertEqual(4, c2.focus1.x)
        self.assertEqual(4, c2.focus1.y)
        self.assertEqual(-2, c2.focus2.x)
        self.assertEqual(4, c2.focus2.y)
        self.assertEqual(6, c2.edge1.x)
        self.assertEqual(6, c2.edge1.y)
        self.assertEqual(-4, c2.edge2.x)
        self.assertEqual(6, c2.edge2.y)
Beispiel #11
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)
Beispiel #12
0
    def testMove(self):
        e1 = ShapeFactory.build("ellipse", Point(1, 1), Point(6, 6),
                                Point(-2, 4))

        e1.move(3, 4)
        self.assertAlmostEqual(4, e1.center.x)
        self.assertAlmostEqual(5, e1.center.y)
        self.assertAlmostEqual(9, e1.point1.x)
        self.assertAlmostEqual(10, e1.point1.y)
        self.assertAlmostEqual(1, e1.point2.x)
        self.assertAlmostEqual(8, e1.point2.y)

        e1.move(-.234, -1.987)
        self.assertAlmostEqual(3.766, e1.center.x)
        self.assertAlmostEqual(3.013, e1.center.y)
        self.assertAlmostEqual(8.766, e1.point1.x)
        self.assertAlmostEqual(8.013, e1.point1.y)
        self.assertAlmostEqual(.766, e1.point2.x)
        self.assertAlmostEqual(6.013, e1.point2.y)

        e1.move(.234, 1.987)
        self.assertAlmostEqual(4, e1.center.x)
        self.assertAlmostEqual(5, e1.center.y)
        self.assertAlmostEqual(9, e1.point1.x)
        self.assertAlmostEqual(10, e1.point1.y)
        self.assertAlmostEqual(1, e1.point2.x)
        self.assertAlmostEqual(8, e1.point2.y)
Beispiel #13
0
    def testValidateImage(self):
        i1 = ShapeFactory.build("image", Point(1, 1), Point(4, 1), Point(4, 3), Point(1, 3), "images/red_eyed_tree_frog.png")
        Image.validateImage(i1, "Image unexpectedly invalid")

        self.assertRaises(ShapeException, Image.validateImage, "(1, 1, 4, 1, 4, 3, 1, 3, images/red_eyed_tree_frog.png)",
                          "String \'(1, 1, 4, 1, 4, 3, 1, 3, images/red_eyed_tree_frog.png)\' is not a valid embedded image")
        self.assertRaises(ShapeException, Image.validateImage, Point(1, 1), "Point is not a valid embedded image")
def drawTriangle(graphics):
    p1 = Point(1, -2)
    p2 = Point(2, -1)
    p3 = Point(0, 0)
    t1 = ShapeFactory.build("triangle", p1, p2, p3)
    t1.draw(graphics)
    graphics.show()
def drawEllipse(graphics):
    p1 = Point(0, 0)
    p2 = Point(3, 0)
    p3 = Point(0, 2)
    e1 = ShapeFactory.build("ellipse", p1, p2, p3)
    e1.draw(graphics)
    graphics.show()
    def importFile(self, path):
        self.display_file.wipeOut()
        #print("{}".format(path))
        vertices = dict()
        vertice_counter = 0
        name = ""

        self.file = open(path, "r+")  # read and write

        for line in self.file:
            if (line[0] == "v"):  # store vertices in a dictionary
                vertice_counter += 1
                vertices[vertice_counter] = line

            elif (line[0] == "o"
                  ):  # store temporarily the name of the object to come
                match = re.findall(r"\S+", line)
                name = match[1]

            elif (line[0] == "p"):  # TODO: FINISH THIS
                match = re.findall(r"\S+", line)
                vertice_for_point = vertices[float(match[1])]
                match = re.findall(r"\S+", vertice_for_point)
                coord = {"x": float(match[1]), "y": float(match[2])}

                p1 = Point(name)
                p1.addCoords(coord["x"], coord["y"])
                self.display_file.addObject(p1)

            elif (line[0] == "l"):
                match = re.findall(r"\S+", line)

                if (len(match) == 3):  # line
                    l = Line(name)
                else:  # polygon
                    l = None

                    if (match[1] == match[-1]):
                        l = Polygon(name)
                    else:
                        l = Curve(name)

                for item in match:
                    if (
                            item != "l"
                    ):  # ignore the first character, only compute coordinates
                        vertice_for_point = vertices[float(item)]
                        match_vertice = re.findall(r"\S+", vertice_for_point)
                        coord = {
                            "x": float(match_vertice[1]),
                            "y": float(match_vertice[2])
                        }
                        l.addCoords(coord["x"], coord["y"])

                if (match[1] == match[-1]
                    ):  # if polygon (last coords == first coords)
                    l.popCoords()  # remove repeated coords

                self.display_file.addObject(l)
Beispiel #17
0
 def testInvalidConstruction(self):
     center = Point(0, 0)
     r1 = ShapeFactory.build("rectangle", Point(1, 1), Point(4, 1),
                             Point(4, 3), Point(1, 3))
     self.assertRaises(AttributeError, ShapeFactory.build, "composite",
                       center, r1.toString())
     self.assertRaises(AttributeError, ShapeFactory.build, "composite", r1,
                       r1.toString())
Beispiel #18
0
 def testSaveImage(self):
     s1 = "images/red_eyed_tree_frog.png"
     i1 = ShapeFactory.build("image", Point(1, 3), Point(5, 3), Point(5, 1),
                             Point(1, 1), s1)
     expected = i1.toString()
     testShapeIO = ShapeIO()
     actual = testShapeIO.saveShape(i1)
     self.assertEqual(expected, actual)
Beispiel #19
0
    def testValidConstruction(self):
        p1 = Point(1, 2)
        self.assertEqual(1, p1.x)
        self.assertEqual(2, p1.y)

        p2 = Point(1.111, 2.222)
        self.assertEqual(1.111, p2.x)
        self.assertEqual(2.222, p2.y)
Beispiel #20
0
 def testLoadSource(self):
     p1 = Point(1, 3)
     p2 = Point(5, 3)
     p3 = Point(5, 1)
     p4 = Point(1, 1)
     s1 = "images/red_eyed_tree_frog.png"
     i1 = ShapeFactory.build("image", p1, p2, p3, p4, s1)
     i1._loadSource()
Beispiel #21
0
 def __constructWithCoords(self, x1, y1, x2, y2):
     try:
         self.__point1 = Point(x1, y1)
         self.__point2 = Point(x2, y2)
         Validator.validateLine(value=self, errorMessage="Line invalid")
         return True
     except ShapeException:
         return False
def drawSquare(graphics):
    p1 = Point(1, 3)
    p2 = Point(5, 3)
    p3 = Point(5, -1)
    p4 = Point(1, -1)
    s1 = ShapeFactory.build("square", p1, p2, p3, p4)
    s1.draw(graphics)
    graphics.show()
def drawRectangle(graphics):
    p1 = Point(1, 3)
    p2 = Point(5, 3)
    p3 = Point(5, 1)
    p4 = Point(1, 1)
    r1 = ShapeFactory.build("rectangle", p1, p2, p3, p4)
    r1.draw(graphics)
    graphics.show()
Beispiel #24
0
    def testClone(self):
        p1 = Point(-123.45, -23.45)
        self.assertEqual(-123.45, p1.x)
        self.assertEqual(-23.45, p1.y)

        p2 = p1.copy()
        self.assertFalse(p1 is p2)
        self.assertEqual(p1.x, p2.x)
        self.assertEqual(p1.y, p2.y)
Beispiel #25
0
    def onAddPoint(self, button):
        self.printToLog("onAddPoint")
        name_entry = self.builder.get_object("PointNameEntry")
        x_entry = self.builder.get_object("PointXEntry")
        y_entry = self.builder.get_object("PointYEntry")
        p1 = Point(name_entry.get_text())

        p1.addCoords(float(x_entry.get_text()), float(y_entry.get_text()))
        self.display_file.addObject(p1)
        self.add_object_window.hide()
Beispiel #26
0
    def validateShape(value, errorMessage):
        if not isinstance(value, Shape):
            raise ShapeException(errorMessage)

        Point.validatePoint(
            value.center,
            "Center <{}> is not a valid point.".format(value.center))
        for point in value.points:
            Point.validatePoint(
                point, "Point <{}> is not a valid point.".format(point))
Beispiel #27
0
    def testValidateSquare(self):
        s1 = ShapeFactory.build("square", Point(1, 1), Point(3, 1),
                                Point(3, 3), Point(1, 3))
        Square.validateSquare(s1, "Square unexpectedly invalid")

        self.assertRaises(
            ShapeException, Square.validateSquare, "(1, 1, 3, 1, 3, 3, 1, 3)",
            "String \'(1, 1, 3, 1, 3, 3, 3, 3)\' is not a valid square")
        self.assertRaises(ShapeException, Square.validateSquare, Point(1, 1),
                          "Point is not a valid square")
Beispiel #28
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")
Beispiel #29
0
 def __init__(self, *args, **kwargs):
     if len(list(args)) == 3:
         center = Point.getCenterPoint(
             Point.getCenterPoint(args[0], args[1]), args[2])
         super().__init__(center, *args, **kwargs)
     else:
         super().__init__(*args, **kwargs)
     self.lines.append(Line(self.point1, self.point2))
     self.lines.append(Line(self.point2, self.point3))
     self.lines.append(Line(self.point3, self.point1))
     Triangle.validateTriangle(self, "Triangle is invalid")
Beispiel #30
0
    def testComputeRadius(self):
        p1 = Point(0, 0)
        p2 = Point(1, 0)
        p3 = Point(0, 1)
        p4 = Point(2, 0)
        p5 = Point(0, 2)
        c1 = Circle(p1, p2, p3, p4, p5)
        self.assertAlmostEqual(2, c1.computeRadius(), places=3)

        c2 = Circle(1, 1, 4, 4, -2, 4, 6, 6, -4, 6)
        self.assertAlmostEqual(7.071, c2.computeRadius(), places=3)