示例#1
0
    def test_2d_intersection_segment_have_partial_internal_overlap(self):

        seg1 = Segment2d(Point2d(1, 1), Point2d(3, 3))
        seg2 = Segment2d(Point2d(2, 2), Point2d(4, 4))

        do_intersect, ixs = seg1.intersect(seg2)
        self.assertTrue(do_intersect)
示例#2
0
    def test_2d_intersection_segments_have_full_overlap(self):

        seg1 = Segment2d(Point2d(1, 1), Point2d(3, 3))
        seg2 = Segment2d(Point2d(3, 3), Point2d(1, 1))

        self.assertTrue(seg1 == seg2)
        self.assertTrue(seg2 == seg1)
    def test_command_add_update_generate_segments_correctly(self):

        parser = CmdParser()

        i11 = r'a "Weber Street" (2,-1) (2,2) (5,5) (5,6) (3,8)'
        i11points = [
            Point2d(2, -1),
            Point2d(2, 2),
            Point2d(5, 5),
            Point2d(5, 6),
            Point2d(3, 8)
        ]
        i11segments = [
            Segment2d(Point2d(2, -1), Point2d(2, 2)),
            Segment2d(Point2d(2, 2), Point2d(5, 5)),
            Segment2d(Point2d(5, 5), Point2d(5, 6)),
            Segment2d(Point2d(5, 6), Point2d(3, 8))
        ]

        db = {}
        command = parser.parse(i11)
        command.execute(db)

        self.assertEqual(command.name, 'add street')
        self.assertEqual(db[command.street].name, 'Weber Street')
        self.assertItemsEqual(db[command.street].segments, i11segments)
示例#4
0
    def test_2d_intersection_segments_intersect_in_one_point(self):

        seg1 = Segment2d(Point2d(0, 0), Point2d(4, 4))
        seg2 = Segment2d(Point2d(0, 4), Point2d(4, 0))

        do_intersect, ixs = seg1.intersect(seg2)
        self.assertTrue(do_intersect)
        self.assertTrue(ixs == Point2d(2, 2))
示例#5
0
    def test_2d_segments_are_equal(self):

        seg1 = Segment2d(Point2d(1, 5), Point2d(2, 6))
        seg2 = Segment2d(Point2d(1, 5), Point2d(2, 6))
        seg3 = Segment2d(Point2d(2, 6), Point2d(1, 5))

        self.assertTrue(seg1 == seg2)
        self.assertTrue(seg1 == seg3)
示例#6
0
    def test_2d_intersecting_segments_do_not_contain_endpoints(self):

        seg1 = Segment2d(Point2d(0, 0), Point2d(4, 4))
        seg2 = Segment2d(Point2d(0, 4), Point2d(4, 0))

        self.assertTrue(seg1.contains(seg1.ep1))
        self.assertTrue(seg1.contains(seg1.ep2))
        self.assertFalse(seg1.contains(seg2.ep1))
        self.assertFalse(seg1.contains(seg2.ep2))

        self.assertTrue(seg2.contains(seg2.ep1))
        self.assertTrue(seg2.contains(seg2.ep2))
        self.assertFalse(seg2.contains(seg1.ep1))
        self.assertFalse(seg2.contains(seg1.ep2))
示例#7
0
    def test_uncontained_point_is_rejected(self):

        sep11 = Point2d(0, 2)
        sep12 = Point2d(3, 2)
        seg1 = Segment2d(sep11, sep12)

        sep21 = Point2d(4, 2)
        sep22 = Point2d(6, 2)
        seg2 = Segment2d(sep21, sep22)

        self.assertFalse(seg1.contains(seg2.ep1))
        self.assertFalse(seg1.contains(seg2.ep2))

        self.assertFalse(seg2.contains(seg1.ep1))
        self.assertFalse(seg2.contains(seg1.ep2))
示例#8
0
    def test_contained_point_is_detected(self):

        sep11 = Point2d(0, 2)
        sep12 = Point2d(5, 2)
        seg1 = Segment2d(sep11, sep12)

        sep21 = Point2d(4, 2)
        sep22 = Point2d(7, 2)
        seg2 = Segment2d(sep21, sep22)

        self.assertTrue(seg1.contains(seg2.ep1))
        self.assertFalse(seg1.contains(seg2.ep2))

        self.assertFalse(seg2.contains(seg1.ep1))
        self.assertTrue(seg2.contains(seg1.ep2))
    def test_correct_input_addupdate_street_command_parses_successfully(self):
        """ Tests that valid input for the 'Add street' command is parsed correctly """

        parser = CmdParser()

        i11 = r'a "Weber Street" (2,-1) (2,2) (5,5) (5,6) (3,8)'
        command = parser.parse(i11)
        i11segments = [
            Segment2d(Point2d(2, -1), Point2d(2, 2)),
            Segment2d(Point2d(2, 2), Point2d(5, 5)),
            Segment2d(Point2d(5, 5), Point2d(5, 6)),
            Segment2d(Point2d(5, 6), Point2d(3, 8))
        ]

        self.assertEqual(command.name, 'add street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual(self.db[command.street], command.points)

        i12 = r' a "Weber Street" (2,-1) (2,2) (5,5) (5,6) (3,8)'
        command = parser.parse(i12)
        self.assertEqual(command.name, 'add street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual(self.db[command.street], command.points)

        i13 = r'  a "Weber Street" (2,-1) (2,2) (5,5) (5,6) (3,8) '
        command = parser.parse(i13)
        self.assertEqual(command.name, 'add street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual(self.db[command.street], command.points)

        i21 = r'c "Weber Street" (4,2) (4,8)'
        command = parser.parse(i21)
        self.assertEqual(command.name, 'update street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual([Point2d(4, 2), Point2d(4, 8)], command.points)

        i22 = r' c "Weber Street" (4,2) (4,8)'
        command = parser.parse(i22)
        self.assertEqual(command.name, 'update street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual([Point2d(4, 2), Point2d(4, 8)], command.points)

        i23 = r'  c "Weber Street" (4,2) (4,8) '
        command = parser.parse(i23)
        self.assertEqual(command.name, 'update street')
        self.assertEqual(command.street, 'Weber Street')
        self.assertItemsEqual([Point2d(4, 2), Point2d(4, 8)], command.points)
示例#10
0
    def test_street_constructor_builds_correct_segments(self):

        points = [
            Point2d(2, -1),
            Point2d(2, 2),
            Point2d(5, 5),
            Point2d(5, 6),
            Point2d(3, 8)
        ]
        segments = [
            Segment2d(Point2d(2, -1), Point2d(2, 2)),
            Segment2d(Point2d(2, 2), Point2d(5, 5)),
            Segment2d(Point2d(5, 5), Point2d(5, 6)),
            Segment2d(Point2d(5, 6), Point2d(3, 8))
        ]

        wstreet = Street("Weber Street", points)
        self.assertItemsEqual(wstreet.segments, segments)
示例#11
0
    def test_2d_segments_are_not_equal(self):

        seg1 = Segment2d(Point2d(0, 0), Point2d(4, 4))
        seg2 = Segment2d(Point2d(0, 4), Point2d(4, 0))

        self.assertFalse(seg1 == seg2)