blob: a82ee89d49f17446f4c2f0c6230c7e172eddf4de [file] [log] [blame]
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for LineDetector."""
from optofidelity.detection._line_detector import LineDetector
from .test_detector import DetectorTest
pwm_preprocessed_data = [
(322,325,373,373), (321,325,373,373), (321,325,373,373), (321,324,373,373),
(321,324,373,373), (321,324,373,373), (321,324,373,373), (321,324,373,373),
(318,321,373,373), (318,321,373,373), (318,321,373,373), (318,321,373,373),
(318,321,373,373), (311,316,373,373), (311,314,373,373), (311,314,373,373),
(311,314,373,373), (311,314,373,373), (306,313,373,373), (306,309,373,373),
(306,309,373,373), (306,309,373,373), (306,309,373,373), (304,309,373,373),
(302,306,373,373), (302,306,373,373), (303,306,373,373), (302,306,373,373),
(303,306,373,373), (300,303,373,373), (300,303,373,373), (300,303,373,373),
(300,303,373,373), (300,303,373,373), (298,301,373,373), (298,301,373,373),
(298,301,373,373), (298,301,373,373), (298,301,373,373), (296,299,373,373),
(296,300,373,373), (296,300,373,373), (297,300,373,373), (296,300,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (295,299,373,373), (295,299,373,373), (295,299,373,373),
(295,299,373,373), (295,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(295,299,373,373), (296,299,373,373), (295,299,373,373), (295,299,373,373),
(295,299,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,299,373,373), (295,299,373,373),
(295,299,373,373), (295,299,373,373), (295,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,300,373,373), (296,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (296,300,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (295,299,373,373), (296,299,373,373), (296,299,373,373),
(295,299,373,373), (295,299,373,373), (295,299,373,373), (295,299,373,373),
(295,299,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (295,298,373,373), (295,299,373,373), (295,299,373,373),
(295,299,373,373), (295,299,373,373), (295,299,373,373), (295,299,373,373),
(296,299,373,373), (296,299,373,373), (295,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,299,373,373), (296,299,373,373),
(296,299,373,373), (296,299,373,373), (296,300,373,373), (296,300,373,373),
(297,300,373,373), (296,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,300,373,373), (297,300,373,373), (297,300,373,373),
(297,300,373,373), (297,301,373,373), (297,301,373,373), (297,300,373,373),
(297,300,373,373), (297,301,373,373), (297,301,373,373), (297,301,373,373),
(297,300,373,373), (297,301,373,373), (297,301,373,373), (297,300,373,373),
(295,299,373,373), (295,299,373,373), (295,298,373,373), (295,298,373,373),
(295,298,373,373), (291,294,373,373), (290,294,373,373), (290,293,373,373),
(290,293,373,373), (290,293,373,373), (278,282,373,373), (279,282,373,373),
(278,282,373,373), (278,281,373,373), (278,281,373,373), (264,273,373,373),
(264,267,373,373), (263,267,373,373), (263,267,373,373), (263,266,373,373),
(257,266,373,373), (247,250,373,373), (246,250,373,373), (246,250,373,373),
(246,249,373,373), (246,250,373,373), (232,235,373,373), (231,235,373,373),
(231,235,373,373), (231,235,373,373), (231,235,373,373), (217,221,373,373),
(217,221,373,373), (217,221,373,373), (217,221,373,373), (217,221,373,373),
(204,207,373,373), (204,207,373,373), (204,208,373,373), (204,208,373,373),
(204,208,373,373), (191,204,373,373), (190,194,373,373), (191,194,373,373),
(191,194,373,373), (191,194,373,373), (188,194,373,373), (178,181,373,373),
(178,181,373,373), (178,181,373,373), (178,181,373,373), (178,181,373,373),
(165,168,373,373), (164,168,373,373), (164,168,373,373), (165,168,373,373),
(165,168,373,373), (152,155,373,373), (152,156,373,373), (152,156,373,373),
(152,156,373,373), (152,156,373,373), (140,143,373,373), (140,143,373,373),
(140,143,373,373), (140,143,373,373), (140,143,373,373), (127,136,373,373),
(127,130,373,373), (127,130,373,373), (127,130,373,373), (127,130,373,373),
(119,130,373,373), (114,117,373,373), (114,117,373,373), (114,117,373,373),
(114,117,373,373), (113,117,373,373), (101,105,373,373), (101,105,373,373),
(101,104,373,373), (101,104,373,373), (101,104,373,373), (89,92,373,373),
(89,92,373,373), (89,92,373,373), (88,92,373,373), (88,92,373,373),
(76,79,373,373), (75,79,373,373), (75,79,373,373), (75,79,373,373),
(75,78,373,373), (63,66,373,373), (63,66,373,373), (63,66,373,373),
(63,66,373,373), (63,66,373,373), (53,65,373,373), (53,56,373,373),
(53,56,373,373), (53,56,373,373), (53,56,373,373), (52,56,283,373),
(53,56,199,373), (53,56,115,373), (28,48,52,373), (0,0,51,373), (0,0,52,300),
(0,0,52,217), (0,0,52,134), (0,0,52,55), (0,0,52,55), (0,0,52,56),
(0,0,52,56), (0,0,52,56), (0,0,53,56), (0,0,53,56), (0,0,53,57), (0,0,53,57),
(0,0,53,57), (0,0,54,57), (0,0,54,57), (0,0,60,63), (0,0,60,63), (0,0,60,64),
(0,0,60,63), (0,0,60,64), (0,0,66,69), (0,0,66,69), (0,0,66,69), (0,0,66,69),
(0,0,66,69), (0,0,71,74), (0,0,71,74), (0,0,70,74), (0,0,71,74), (0,0,71,74),
(0,0,75,78), (0,0,75,78), (0,0,75,79), (0,0,75,78), (0,0,75,79), (0,0,78,81),
(0,0,78,82), (0,0,78,81), (0,0,78,82), (0,0,78,81), (0,0,80,84), (0,0,80,84),
(0,0,80,83), (0,0,80,83), (0,0,80,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,83),
(0,0,80,83), (0,0,80,84), (0,0,80,84), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84),
(0,0,80,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,85), (0,0,81,85), (0,0,81,84), (0,0,81,85), (0,0,81,84), (0,0,81,85),
(0,0,81,86), (0,0,81,85), (0,0,81,85), (0,0,81,85), (0,0,81,85), (0,0,81,85),
(0,0,81,85), (0,0,81,85), (0,0,81,85), (0,0,81,85), (0,0,81,85), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,83), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,84), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,85), (0,0,80,83), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,84), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84),
(0,0,80,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,85), (0,0,81,85), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,85), (0,0,81,85), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84), (0,0,81,84),
(0,0,81,84), (0,0,81,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84),
(0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,84), (0,0,80,83),
(0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83), (0,0,80,83),
(0,0,79,83), (0,0,79,83), (0,0,79,83), (0,0,79,83), (0,0,79,83), (0,0,79,83),
(0,0,79,82), (0,0,79,82), (0,0,79,82), (0,0,79,83), (0,0,79,83), (0,0,79,82),
(0,0,79,82), (0,0,79,82), (0,0,79,82), (0,0,79,82), (0,0,79,82), (0,0,79,82),
(0,0,79,82), (0,0,79,83), (0,0,79,83), (0,0,79,83), (0,0,83,86), (0,0,82,86),
(0,0,83,86), (0,0,83,86), (0,0,83,86), (0,0,92,95), (0,0,92,95), (0,0,92,96),
(0,0,92,96), (0,0,92,96), (0,0,105,108), (0,0,105,108), (0,0,105,108),
(0,0,105,108), (0,0,105,109), (0,0,123,126), (0,0,123,126), (0,0,123,126),
(0,0,123,127), (0,0,123,142), (0,0,139,143), (0,0,139,143), (0,0,139,143),
(0,0,139,143), (0,0,154,157), (0,0,154,157), (0,0,154,157), (0,0,154,157),
(0,0,154,157), (0,0,168,172), (0,0,168,172), (0,0,168,171), (0,0,168,171),
(0,0,168,171), (0,0,182,185), (0,0,181,185), (0,0,181,185), (0,0,181,185),
(0,0,181,184), (0,0,195,198), (0,0,195,198), (0,0,194,198), (0,0,195,198),
(0,0,195,198), (0,0,209,212), (0,0,209,212), (0,0,208,212), (0,0,208,212),
(0,0,209,212), (0,0,221,224), (0,0,220,224), (0,0,220,224), (0,0,220,224),
(0,0,220,224), (0,0,232,236), (0,0,232,236), (0,0,232,235), (0,0,232,236),
(0,0,232,248), (0,0,245,248), (0,0,245,248), (0,0,245,248), (0,0,245,248),
(0,0,245,261), (0,0,257,261), (0,0,257,261), (0,0,257,261), (0,0,257,261),
(0,0,270,273), (0,0,270,273), (0,0,270,273), (0,0,270,273), (0,0,270,273),
(0,0,282,285), (0,0,282,285), (0,0,282,285), (0,0,282,285), (0,0,282,285),
(0,0,295,298), (0,0,295,298), (0,0,295,298), (0,0,295,298), (0,0,295,298),
(0,0,307,310), (0,0,307,310), (0,0,307,311), (0,0,307,311), (0,0,307,311),
(0,0,318,321), (0,0,318,321), (0,0,318,322), (0,0,318,322), (0,0,319,322),
(0,0,323,326), (0,0,323,326), (0,0,323,327), (0,0,323,327), (0,0,323,326),
(0,0,323,326), (0,0,323,326), (0,0,323,326), (0,0,323,326), (0,0,323,326),
(0,0,323,326), (0,0,323,326), (0,0,323,326), (0,0,323,326), (0,0,323,326),
(0,0,322,326), (0,0,322,326), (0,0,322,326), (0,0,322,326), (0,0,322,326),
(0,0,322,325), (0,0,322,325), (0,0,322,325), (0,0,322,325), (0,0,322,325),
(0,0,320,324), (0,0,320,324), (0,0,320,324), (0,0,320,324), (0,0,320,324),
(0,0,320,323)
]
reset_preprocessed_data = [
(46,50,345,345), (47,50,345,345), (47,50,345,345), (47,50,345,345),
(47,50,345,345), (47,50,345,345), (47,50,345,345), (47,50,345,345),
(47,50,306,345), (47,50,228,287), (47,50,149,213), (47,50,70,135),
(0,32,43,46), (0,0,43,332), (0,0,43,254), (0,0,43,178), (0,0,43,102),
(0,0,43,46), (0,0,43,47), (0,0,43,47), (0,0,43,47), (0,0,43,46), (0,0,43,47),
(0,0,43,47), (0,0,43,47), (0,0,43,47), (0,0,43,46), (0,0,43,47), (0,0,43,47),
(0,0,43,47),
]
off_screen_preprocessed_data = [
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(261,269,269,269), (260,268,269,269), (260,263,269,269), (260,263,269,269),
(258,263,269,269), (256,262,269,269), (256,262,269,269), (256,259,269,269),
(256,259,269,269), (256,259,269,269), (254,259,269,269), (254,258,269,269),
(254,257,269,269), (254,257,269,269), (253,257,269,269), (252,256,269,269),
(252,256,269,269), (252,255,269,269), (252,255,269,269), (252,255,269,269),
(251,255,269,269), (251,254,269,269), (251,254,269,269), (251,254,269,269),
(251,254,269,269), (251,254,269,269), (250,253,269,269), (250,253,269,269),
(250,253,269,269), (250,253,269,269), (250,253,269,269), (250,253,269,269),
(17,20,269,269), (17,20,269,269), (17,20,269,269), (17,20,269,269),
(17,20,269,269), (17,20,269,269), (17,20,269,269), (17,20,269,269),
(17,20,269,269), (17,20,269,269), (17,20,214,269), (17,21,137,269),
(17,20,60,269), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (0,0,0,19), (0,0,0,19),
(0,0,0,14), (0,0,0,14), (0,0,0,14), (0,0,0,14), (0,0,0,14), (0,0,2,14),
(0,0,2,14), (0,0,2,14), (0,0,2,14), (0,0,2,14), (0,0,5,15), (0,0,4,15),
(0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15),
(0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15), (0,0,11,15),
(0,0,199,202), (0,0,199,202), (0,0,199,213), (0,0,200,214), (0,0,201,215),
(0,0,211,215), (0,0,212,215), (0,0,212,225), (0,0,213,225), (0,0,213,226),
(0,0,223,226), (0,0,223,226), (0,0,224,236), (0,0,224,236), (0,0,225,236),
(0,0,233,236), (0,0,234,237), (0,0,234,246), (0,0,235,247), (0,0,242,247),
(0,0,244,247), (0,0,244,247), (0,0,244,257), (0,0,245,257), (0,0,246,258),
(0,0,255,258), (0,0,255,258), (0,0,255,263), (0,0,255,264), (0,0,257,264),
(0,0,261,264), (0,0,261,264), (0,0,261,269), (0,0,261,269), (0,0,269,269),
(0,0,269,269), (0,0,269,269), (0,0,269,269), (0,0,269,269),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
(None,None,None,None), (None,None,None,None), (None,None,None,None),
]
class LineDetectorTest(DetectorTest):
def testPreProcessing(self):
frame = self.calibratedFrame("line.png")
preprocessed_data = LineDetector().Preprocess(frame, None)
self.assertEqual(preprocessed_data, (168, 210, 537, 541))
def testEventGeneration(self):
events = list(LineDetector().GenerateEvents(pwm_preprocessed_data))
# 1 Reset Event
self.assertEqual(len([e for e in events if e.location is None]), 1)
# 52 Line draw events
self.assertEqual(len([e for e in events if e.location is not None]), 48)
def testResetEventGeneration(self):
events = list(LineDetector().GenerateEvents(reset_preprocessed_data))
# 1 Reset Event
self.assertEqual(len([e for e in events if e.location is None]), 1)
def testOffScreenEventGeneration(self):
events = list(LineDetector().GenerateEvents(off_screen_preprocessed_data))
# 3 Reset Events
self.assertEqual(len([e for e in events if e.location is None]), 3)