diff --git a/test/test_feature_extractors_functional.py b/test/test_feature_extractors_functional.py new file mode 100644 index 0000000..83fcc3c --- /dev/null +++ b/test/test_feature_extractors_functional.py @@ -0,0 +1,44 @@ +"""test_feature_extractors_functional.py -- functional tests for feature extractors + +This module contains functional tests for FEs using crafted and/or generated media files +to verify that the FEs are working as expected: + + - laughter detection -- uses videos with laughs at known times + - video activity -- uses videos with visual activity at known times + - audio loudness -- uses videos with audio at known times + +etc. + +These tests are marked slow to avoid running them during normal test runs. +""" + +import unittest +import pipeline.feature_extractors as extractors +import test.mocks as mocks +class TestVideoActivityFEFunctional(unittest.TestCase): + """TestVisualActivityFEFunctional -- functional tests for visual activity feature extractor + """ + + def test_visual_activity_functional(self): + """Test visual activity feature extractor + + use: + - sample_videos/sample-manual-visualactivity.mp4 :: activity at 15-20s -- pass if activity detected anywhere in this range + """ + SAMPLE_VIDEO = "/home/robert/code/softdev2023-24/summerproject/highlights/test/sample_videos/sample-manual-visualactivity.mp4" + + START_TIME = 15 + END_TIME = 20 + # create mock source with the video + source = mocks.MockSource(path=SAMPLE_VIDEO) + + # create the feature extractor + testfe = extractors.VideoActivityFeatureExtractor(input_files=[source]) + testfe.setup() + testfe.run() + testfe.teardown() + + # check if the feature was extracted: + self.assertTrue(testfe.features) + # check if the feature interval is within the expected range + self.assertTrue(testfe.features[0].interval.start >= START_TIME)