From cd8d57e9b1aefd9fb98c8316c4a7150142b3ecd5 Mon Sep 17 00:00:00 2001 From: Rob Hallam <0504004h@student.gla.ac.uk> Date: Sat, 17 Aug 2024 15:57:56 +0100 Subject: [PATCH] test: add tests for LAFE and RFE Initialset of tests for LaughterFeatureExtractor and RandomFeatureExtractor --- test/test_feature_extractors.py | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/test_feature_extractors.py diff --git a/test/test_feature_extractors.py b/test/test_feature_extractors.py new file mode 100644 index 0000000..1e2b743 --- /dev/null +++ b/test/test_feature_extractors.py @@ -0,0 +1,50 @@ +"""test_feature_extractors.py - test pipeline feature extractors""" +import unittest +import os +import pytest +import pipeline.feature_extractors as extractors + +from pipeline.utils import Source, SourceMedia # technically makes this an integration test, but... +class TestSource(): + """Provide utils.Source for testing""" + def one_colour_silent_audio(self): + """Provide a source with a silent mono-colour video""" + TEST_DIR = os.path.dirname(os.path.realpath(__file__)) + SAMPLE_VIDEO = f"{TEST_DIR}/sample_videos/test_video_red_silentaudio.mp4" # silent video definitely has no laughter + return Source(source=SAMPLE_VIDEO, path=SAMPLE_VIDEO, provider="test") + +class TestLaughterFeatureExtractor(unittest.TestCase): + """Test LaughterFeatureExtractor""" + def test_init(self): + test_extractor = extractors.LaughterFeatureExtractor() + self.assertTrue(test_extractor) + + def test_setup_noinput(self): + """test setup - no input files""" + test_extractor = extractors.LaughterFeatureExtractor() + with self.assertRaises(ValueError): + test_extractor.setup() + # NB test WITH sources implicitly tested in test_extract + +class TestRandomFeatureExtractor(unittest.TestCase): + """Test RandomFeatureExtractor""" + def test_init(self): + test_extractor = extractors.RandomFeatureExtractor() + self.assertTrue(test_extractor) + + def test_setup_noinput(self): + """test setup - no input files""" + test_extractor = extractors.RandomFeatureExtractor() + with self.assertRaises(ValueError): + test_extractor.setup() + # NB test WITH sources implicitly tested in test_extract + + def test_extract(self): + """Test extract with input files""" + video_source = TestSourceMedia().one_colour_silent_audio() + test_extractor = extractors.RandomFeatureExtractor(input_files=video_source) + test_extractor.setup() + test_extractor.run() + test_extractor.teardown() + self.assertTrue(test_extractor.features) +