diff --git a/pdfminer/utils.py b/pdfminer/utils.py index 31c608a..1eeefc3 100644 --- a/pdfminer/utils.py +++ b/pdfminer/utils.py @@ -161,7 +161,6 @@ def fsplit(pred, objs): # drange def drange(v0, v1, d): """Returns a discrete range.""" - assert v0 < v1, str((v0, v1, d)) return range(int(v0)//d, int(v1+d)//d) diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..e7d9d71 --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,40 @@ +from nose.tools import assert_equal + +from pdfminer.layout import LTComponent +from pdfminer.utils import make_compat_str, Plane + + +class TestPlane(object): + def test_find_nothing_in_empty_bbox(self): + plane, _ = self.given_plane_with_one_object() + result = list(plane.find((50, 50, 100, 100))) + assert_equal(result, []) + + def test_find_nothing_after_removing(self): + plane, obj = self.given_plane_with_one_object() + plane.remove(obj) + result = list(plane.find((0, 0, 100, 100))) + assert_equal(result, []) + + def test_find_object_in_whole_plane(self): + plane, obj = self.given_plane_with_one_object() + result = list(plane.find((0, 0, 100, 100))) + assert_equal(result, [obj]) + + def test_find_if_object_is_smaller_than_gridsize(self): + plane, obj = self.given_plane_with_one_object(object_size=1, gridsize=100) + result = list(plane.find((0, 0, 100, 100))) + assert_equal(result, [obj]) + + def test_find_object_if_much_larger_than_gridsize(self): + plane, obj = self.given_plane_with_one_object(object_size=100, gridsize=10) + result = list(plane.find((0, 0, 100, 100))) + assert_equal(result, [obj]) + + @staticmethod + def given_plane_with_one_object(object_size=50, gridsize=50): + bounding_box = (0, 0, 100, 100) + plane = Plane(bounding_box, gridsize) + obj = LTComponent((0, 0, object_size, object_size)) + plane.add(obj) + return plane, obj \ No newline at end of file