def test_get_selection_by_rect(): rects = map(lambda o: R(*o), RECTS) cloud = RectangleCloud(rects) occ = cloud.get_occupied_rect() cp = occ.get_center() ## sector 1, 1 half1 = partition(occ, cp, DIRECTION_RIGHT) half2 = partition(occ, cp, DIRECTION_UP) sectorrect = half1.get_intersection(half2) assert ( set(cloud.get_selection_by_rect(sectorrect)) == set() ) ## sector 0, 1 half1 = partition(occ, cp, DIRECTION_LEFT) half2 = partition(occ, cp, DIRECTION_UP) sectorrect = half1.get_intersection(half2) assert ( set(cloud.get_selection_by_rect(sectorrect)) == set([rects[3], rects[4]]) ) ## sector 0, 0 half1 = partition(occ, cp, DIRECTION_LEFT) half2 = partition(occ, cp, DIRECTION_DOWN) sectorrect = half1.get_intersection(half2) assert ( set(cloud.get_selection_by_rect(sectorrect)) == set([rects[0], rects[1], rects[3]]) ) ## sector 1, 0 half1 = partition(occ, cp, DIRECTION_RIGHT) half2 = partition(occ, cp, DIRECTION_DOWN) sectorrect = half1.get_intersection(half2) assert ( set(cloud.get_selection_by_rect(sectorrect)) == set([rects[2]]) )