51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import unittest
|
|
|
|
from pyzbar.locations import bounding_box, convex_hull, Rect
|
|
|
|
|
|
class TestLocations(unittest.TestCase):
|
|
def test_bounding_box(self):
|
|
self.assertRaises(ValueError, bounding_box, [])
|
|
self.assertEqual(
|
|
Rect(left=0, top=0, width=0, height=0),
|
|
bounding_box([(0, 0)])
|
|
)
|
|
self.assertEqual(
|
|
Rect(left=37, top=550, width=324, height=76),
|
|
bounding_box([(37, 551), (37, 625), (361, 626), (361, 550)])
|
|
)
|
|
|
|
def test_convex_hull_empty(self):
|
|
self.assertEqual([], convex_hull([]))
|
|
|
|
def test_convex_square(self):
|
|
points = [(0, 0), (0, 1), (1, 1), (1, 0)]
|
|
self.assertEqual(points, convex_hull(points)),
|
|
|
|
def test_convex_duplicates(self):
|
|
points = [(0, 0), (0, 1), (1, 1), (1, 0)]
|
|
self.assertEqual(points, convex_hull(points * 10)),
|
|
|
|
def test_other(self):
|
|
# Taken from
|
|
# https://codegolf.stackexchange.com/questions/11035/find-the-convex-hull-of-a-set-of-2d-points
|
|
res = convex_hull([(1, 1), (2, 2), (3, 3), (1, 3)])
|
|
self.assertEqual([(1, 1), (1, 3), (3, 3)], res)
|
|
|
|
res = convex_hull([
|
|
(4.4, 14), (6.7, 15.25), (6.9, 12.8), (2.1, 11.1), (9.5, 14.9),
|
|
(13.2, 11.9), (10.3, 12.3), (6.8, 9.5), (3.3, 7.7), (0.6, 5.1),
|
|
(5.3, 2.4), (8.45, 4.7), (11.5, 9.6), (13.8, 7.3), (12.9, 3.1),
|
|
(11, 1.1)
|
|
])
|
|
|
|
expected = [
|
|
(0.6, 5.1), (2.1, 11.1), (4.4, 14), (6.7, 15.25), (9.5, 14.9),
|
|
(13.2, 11.9), (13.8, 7.3), (12.9, 3.1), (11, 1.1), (5.3, 2.4)
|
|
]
|
|
self.assertEqual(expected, res)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|