import unittest import numpy as np import importlib utils = importlib.import_module('extensions.sd-webui-controlnet.tests.utils', 'utils') utils.setup_test_env() from annotator.openpose.util import faceDetect, handDetect from annotator.openpose.body import Keypoint, BodyResult class TestFaceDetect(unittest.TestCase): def test_no_faces(self): oriImg = np.zeros((100, 100, 3), dtype=np.uint8) body = BodyResult([None] * 18, total_score=3, total_parts=0) expected_result = None result = faceDetect(body, oriImg) self.assertEqual(result, expected_result) def test_single_face(self): body = BodyResult([ Keypoint(50, 50), *([None] * 13), Keypoint(30, 40), Keypoint(70, 40), Keypoint(20, 50), Keypoint(80, 50), ], total_score=2, total_parts=5) oriImg = np.zeros((100, 100, 3), dtype=np.uint8) expected_result = (0, 0, 120) result = faceDetect(body, oriImg) self.assertEqual(result, expected_result) class TestHandDetect(unittest.TestCase): def test_no_hands(self): oriImg = np.zeros((100, 100, 3), dtype=np.uint8) body = BodyResult([None] * 18, total_score=3, total_parts=0) expected_result = [] result = handDetect(body, oriImg) self.assertEqual(result, expected_result) def test_single_left_hand(self): oriImg = np.zeros((100, 100, 3), dtype=np.uint8) body = BodyResult([ None, None, None, None, None, Keypoint(20, 20), Keypoint(40, 30), Keypoint(60, 40), *([None] * 8), Keypoint(20, 60), Keypoint(40, 70), Keypoint(60, 80) ], total_score=3, total_parts=0.5) expected_result = [(49, 26, 33, True)] result = handDetect(body, oriImg) self.assertEqual(result, expected_result) def test_single_right_hand(self): oriImg = np.zeros((100, 100, 3), dtype=np.uint8) body = BodyResult([ None, None, Keypoint(20, 20), Keypoint(40, 30), Keypoint(60, 40), *([None] * 11), Keypoint(20, 60), Keypoint(40, 70), Keypoint(60, 80) ], total_score=3, total_parts=0.5) expected_result = [(49, 26, 33, False)] result = handDetect(body, oriImg) self.assertEqual(result, expected_result) def test_multiple_hands(self): body = BodyResult([ Keypoint(20, 20), Keypoint(40, 30), Keypoint(60, 40), Keypoint(20, 60), Keypoint(40, 70), Keypoint(60, 80), Keypoint(10, 10), Keypoint(30, 20), Keypoint(50, 30), Keypoint(10, 50), Keypoint(30, 60), Keypoint(50, 70), *([None] * 6), ], total_score=3, total_parts=0.5) oriImg = np.zeros((100, 100, 3), dtype=np.uint8) expected_result = [(0, 0, 100, True), (16, 43, 56, False)] result = handDetect(body, oriImg) self.assertEqual(result, expected_result) if __name__ == '__main__': unittest.main()