1"""pyrtree Unittest.""" 2from ..rtree import RTree, Rect 3import unittest 4 5 6class Pyrtree_Tester(unittest.TestCase): 7 def setUp(self): 8 k = 10 9 w = 20 10 objects = {} 11 id = 0 12 for i in range(k): 13 mn_y = i * w 14 mx_y = mn_y + w 15 for j in range(k): 16 mn_x = j * w 17 mx_x = mn_x + w 18 objects[id] = Rect(mn_x, mn_y, mx_x, mx_y) 19 id += 1 20 self.objects = objects 21 22 def test_rtree(self): 23 t = RTree() 24 for object in self.objects: 25 t.insert(object, self.objects[object]) 26 self.assertEqual(len(self.objects), 100) 27 28 qr = Rect(5, 5, 25, 25) 29 30 # find objects with mbrs intersecting with qr 31 res = [r.leaf_obj() for r in t.query_rect(qr) if r.is_leaf()] 32 self.assertEqual(len(res), 4) 33 res.sort() 34 self.assertEqual(res, [0, 1, 10, 11]) 35 36 # vertices are shared by all coincident rectangles 37 res = [r.leaf_obj() for r in t.query_point((20.0, 20.0)) if r.is_leaf()] 38 self.assertEqual(len(res), 4) 39 40 res = [r.leaf_obj() for r in t.query_point((21, 20)) if r.is_leaf()] 41 self.assertEqual(len(res), 2) 42 43 # single internal point 44 res = [r.leaf_obj() for r in t.query_point((21, 21)) if r.is_leaf()] 45 self.assertEqual(len(res), 1) 46 47 # single external point 48 res = [r.leaf_obj() for r in t.query_point((-12, 21)) if r.is_leaf()] 49 self.assertEqual(len(res), 0) 50 51 qr = Rect(5, 6, 65, 7) 52 53 res = [r.leaf_obj() for r in t.query_rect((qr)) if r.is_leaf()] 54 self.assertEqual(len(res), 4) 55 56 57suite = unittest.TestSuite() 58test_classes = [Pyrtree_Tester] 59for i in test_classes: 60 a = unittest.TestLoader().loadTestsFromTestCase(i) 61 suite.addTest(a) 62 63if __name__ == "__main__": 64 runner = unittest.TextTestRunner() 65 runner.run(suite) 66