|
- """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 TestSourceMedia():
- """Provide utils.SourceMedia for testing"""
- def one_colour_silent_audio(self):
- """Provide a source with a silent mono-colour video"""
- return SourceMedia(sources=[TestSource().one_colour_silent_audio()])
-
- 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_noinput(self):
- """Test extract with no input files"""
- test_extractor = extractors.RandomFeatureExtractor()
- with self.assertRaises(ValueError):
- test_extractor.run()
-
- 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)
-
- class TestLoudAudioFeatureExtractor(unittest.TestCase):
- """Test LoudAudioFeatureExtractor"""
- def test_init(self):
- video_source = TestSourceMedia().one_colour_silent_audio()
- test_extractor = extractors.LoudAudioFeatureExtractor(input_files=video_source)
- self.assertTrue(test_extractor)
-
- def test_init_noinput(self):
- """test init - no input files"""
- with self.assertRaises(ValueError):
- test_extractor = extractors.LoudAudioFeatureExtractor()
-
- def test_extract(self):
- """Test extract with input files"""
- video_source = TestSourceMedia().one_colour_silent_audio()
- test_extractor = extractors.LoudAudioFeatureExtractor(input_files=video_source)
- test_extractor.setup()
- test_extractor.run()
- test_extractor.teardown()
- self.assertEqual(test_extractor.features, [])
|