| # 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) |