예제 #1
0
    def test_str_deep(self):
        """
        Note: This testcase only succeeds within 24 hours from initialization of DB.
        (Because of 'alives' function)

        """
        self.assertEqual(
            str(
                Message([
                    PlainText(name='Alive Device Ratio: '),
                    Function(name='divide', messages=[
                        Message([
                            Function(name='alives', messages=[
                                Message([])
                            ]),
                        ]),
                        Message([
                            Function(name='devices', messages=[
                                Message([])
                            ]),
                        ]),
                    ])
                ])
            ),
            'Alive Device Ratio: 0.75'
        )
예제 #2
0
 def test_parse_mix(self):
     self.assertEqual(
         Pipeline.parse('Alive Device: #alives() / #devices()'),
         Message([
             PlainText(name='Alive Device: '),
             Function(name='alives', messages=[
                 Message([])
             ]),
             PlainText(name=' / '),
             Function(name='devices', messages=[
                 Message([])
             ])
         ])
     )
예제 #3
0
 def test_parse_function_multi_params(self):
     self.assertEqual(
         Pipeline.parse('#plus(1, 2)'),
         Message([
             Function(name='plus', messages=[
                 Message([PlainText(name='1')]),
                 Message([PlainText(name='2')])
             ])
         ])
     )
예제 #4
0
 def test_lack_param_error(self):
     self.assertRaises(
         FunctionParamUnmatchError,
         str,
         Message([
             Function(name='report', messages=[
                 Message([])  # param needed but it's empty
             ])
         ])
     )
예제 #5
0
 def test_invalid_function_error(self):
     self.assertRaises(
         FunctionNotFoundError,
         str,
         Message([
             Function(name='not_exist_function', messages=[
                 Message([])
             ])
         ])
     )
예제 #6
0
 def test_parse_function_report(self):
     self.assertEqual(
         Pipeline.parse('#report(GPU480)'),
         Message([
             Function(name='report', messages=[
                 Message([
                     PlainText(name='GPU480')
                 ])
             ])
         ])
     )
예제 #7
0
 def test_extra_param_error(self):
     self.assertRaises(
         FunctionParamUnmatchError,
         str,
         Message([
             Function(name='devices', messages=[
                 Message([
                     PlainText(name='extra_word')
                 ])
             ])
         ])
     )
예제 #8
0
 def test_str_function_multi_params(self):
     self.assertEqual(
         str(
             Message([
                 Function(name='plus', messages=[
                     Message([PlainText(name='1')]),
                     Message([PlainText(name='2')])
                 ])
             ])
         ),
         '3'
     )
예제 #9
0
 def test_str_function_report(self):
     self.assertEqual(
         str(
             Message([
                 Function(name='report', messages=[
                     Message([
                         PlainText(name='GPU480')
                     ])
                 ])
             ])
         ),
         'GPU Information Here.'
     )
예제 #10
0
    def test_parse_deep(self):
        """
        Note: This testcase only succeeds within 24 hours from initialization of DB.
        (Because of 'alives' function)

        """
        self.assertEqual(
            Pipeline.parse('Alive Device Ratio: #divide(#alives(), #devices())'),
            Message([
                PlainText(name='Alive Device Ratio: '),
                Function(name='divide', messages=[
                    Message([
                        Function(name='alives', messages=[
                            Message([])
                        ]),
                    ]),
                    Message([
                        Function(name='devices', messages=[
                            Message([])
                        ]),
                    ]),
                ])
            ])
        )
            continue

    pts = np.array(corners, np.int32)
    for bb in pts:
        convexHull = cv2.convexHull(bb)
        convexHull = convexHull.reshape((-1, 1, 2))
        cv2.polylines(polyImg, [convexHull], True, (231, 76, 60), thickness=3)

    return polyImg


def _draw_all_contours(contours, img):
    res = img.copy()
    cv2.polylines(res, contours, True, (231, 76, 60), thickness=3)
    return res


if __name__ == '__main__':
    from data_test.standard_samples import RANDOM_PAINTING, TEST_PAINTINGS
    from pipeline import Pipeline, Function

    filename = TEST_PAINTINGS[0]

    img = cv2.imread(filename)
    pipeline = Pipeline(default=True)
    pipeline.append(Function(highlight_paintings, source=img, pad=100))
    out = pipeline.run(img, debug=True, print_time=True, filename=filename)
    for step, out in enumerate([
            img,
    ] + pipeline.debug_out_list):
        cv2.imwrite(f'data_test/{step:02d}.jpg', out)