Source code for unittests.test_helpers_unit

"""Unittests for helper.py"""
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(__file__, "../../../")))

from gstswitch.helpers import TestSources, PreviewSinks
from gstswitch.exception import RangeError, InvalidIndexError
import pytest
from gstswitch import testsource


[docs]class TestTestSourcesVideoPort(object): """Test for video_port parameter"""
[docs] def test_range(self): """Test when out of range""" tests = [-100, 1e7, 65536] for test in tests: with pytest.raises(RangeError): TestSources(video_port=test)
[docs] def test_invalid(self): """Test when not integral value""" tests = [[1, 2, 3, 4], {1: 2, 2: 3}, '1e10'] for test in tests: with pytest.raises(TypeError): TestSources(video_port=test)
[docs] def test_normal(self): """Test when valid""" tests = [1, 65535, 1000] for test in tests: src = TestSources(video_port=test) assert src.video_port == test
[docs]class TestTestSourcesAudioPort(object): """Test for audio_port parameter"""
[docs] def test_range(self): """Test when out of range""" tests = [-100, 1e7, 65536] for test in tests: with pytest.raises(RangeError): TestSources(audio_port=test)
[docs] def test_invalid(self): """Test when not integral value""" tests = [[1, 2, 3, 4], {1: 2, 2: 3}, '1e10'] for test in tests: with pytest.raises(TypeError): TestSources(audio_port=test)
[docs] def test_normal(self): """Test when valid""" tests = [1, 65535, 1000] for test in tests: src = TestSources(audio_port=test) assert src.audio_port == test
[docs]class TestTestSources(object): """Test for testsources"""
[docs] class MockVideoSrc(object): """A mock video source""" def __init__(self, port, width=300, height=200, pattern=None, timeoverlay=False, clockoverlay=False): pass
[docs] def run(self): """Run the mock video source""" pass
[docs] def test_new_test_video(self, monkeypatch): """Test for new_test_video""" test = TestSources(video_port=3000) monkeypatch.setattr(testsource, 'VideoSrc', self.MockVideoSrc) test.new_test_video() assert test.running_tests_video[0] is not None assert len(test.running_tests_video) != 0
[docs] class MockTest(object): """A mock test""" def __init__(self, pattern): self.pattern = pattern
[docs] def end(self): """End the test""" pass
[docs] def test_get_test_video(self): """Test for get_test_video""" test = TestSources(video_port=3000) test.running_tests_video = [ self.MockTest(1), self.MockTest(2), self.MockTest(3), self.MockTest(19)] test.get_test_video()
[docs] def test_terminate_index_error_video(self): """Test for terminate_video""" testsrc = TestSources(video_port=3000) testsrc.running_tests_video = [ self.MockTest(1), self.MockTest(2), self.MockTest(3), self.MockTest(19)] tests = [-100, 20, 1e10, "hi", [1, 2, 3]] for test in tests: with pytest.raises(InvalidIndexError): testsrc.terminate_index_video(test)
[docs] def test_terminate_index_normal_video(self): """Test terminate_index_video""" test = TestSources(video_port=3000) test.running_tests_video = [ self.MockTest(1), self.MockTest(2), self.MockTest(3), self.MockTest(19)] test.terminate_index_video(0)
[docs] def test_terminate1_video(self): """Test terminate_video multiple""" test = TestSources(video_port=3000) test.running_tests_video = [ self.MockTest(1), self.MockTest(2), self.MockTest(3), self.MockTest(19)] test.terminate_video()
[docs] def test_terminate2_video(self): """Test terminate_video none present""" test = TestSources(video_port=3000) test.running_tests_video = [] test.terminate_video()
[docs] class MockAudioSrc(object): """A Mock audio source""" def __init__(self, port, freq=110, wave=None): pass
[docs] def run(self): """Run the source""" pass
[docs] def test_new_test_audio(self, monkeypatch): """Test new_test_audio""" test = TestSources(audio_port=3000) monkeypatch.setattr(testsource, 'AudioSrc', self.MockAudioSrc) test.new_test_audio() assert test.running_tests_audio[0] is not None assert len(test.running_tests_audio) != 0
[docs] class MockTest2(object): """A mock audio source""" def __init__(self, wave): self.wave = wave
[docs] def end(self): """End the source""" pass
[docs] def test_get_test_audio(self): """Test get_test_audio""" test = TestSources(audio_port=4000) test.running_tests_audio = [ self.MockTest2(1), self.MockTest2(2), self.MockTest2(3), self.MockTest2(10)] test.get_test_audio()
[docs] def test_terminate_index_error_audio(self): """Test terminate_index_audio - invalid index""" testsrc = TestSources(audio_port=4000) testsrc.running_tests_audio = [ self.MockTest2(1), self.MockTest2(2), self.MockTest2(3), self.MockTest2(10)] tests = [-100, 20, 1e10, "hi", [1, 2, 3]] for test in tests: with pytest.raises(InvalidIndexError): testsrc.terminate_index_audio(test)
[docs] def test_terminate_index_normal_audio(self): """Test terminate_index_audio valid index""" test = TestSources(audio_port=4000) test.running_tests_audio = [ self.MockTest2(1), self.MockTest2(2), self.MockTest2(3), self.MockTest2(10)] test.terminate_index_audio(0)
[docs] def test_terminate1_audio(self): """Test terminate_audio multiple""" test = TestSources(audio_port=4000) test.running_tests_audio = [ self.MockTest2(1), self.MockTest2(2), self.MockTest2(3), self.MockTest2(10)] test.terminate_audio()
[docs] def test_terminate2_audio(self): """Test terminate_audio none present""" test = TestSources(audio_port=4000) test.running_tests_audio = [] test.terminate_audio()
[docs]class TestPreviewSinksPreviewPort(object): """Test preview_port parameter"""
[docs] def test_blank(self): """Test when preview_port is blank""" tests = ['', None, [], {}] for test in tests: with pytest.raises(ValueError): PreviewSinks(preview_port=test)
[docs] def test_range(self): """Test when preview_port is out of range""" tests = [-100, 1e7, 65536] for test in tests: with pytest.raises(RangeError): PreviewSinks(preview_port=test)
[docs] def test_invalid(self): """Test when preview_port is not a integral value""" tests = [[1, 2, 3, 4], {1: 2, 2: 3}, '1e10'] for test in tests: with pytest.raises(TypeError): PreviewSinks(preview_port=test)
[docs] def test_normal(self): """Test when preview_port is valid""" tests = [1, 65535, 1000] for test in tests: src = PreviewSinks(preview_port=test) assert src.preview_port == test
[docs]class TestPreviewSinks(object): """Test Preview Sinks"""
[docs] class MockPreview(object): """A mock preview class""" def __init__(self, preview_port=3001): pass
[docs] def run(self): """Run the preview""" pass
[docs] def end(self): """End the preview""" pass
[docs] def test_run(self, monkeypatch): """Test running preview""" preview = PreviewSinks() monkeypatch.setattr(testsource, 'Preview', self.MockPreview) preview.run() assert preview.preview is not None
[docs] def test_terminate_fail(self): """Test terminating a preview when none exists""" preview = PreviewSinks() with pytest.raises(AttributeError): preview.terminate()
[docs] def test_terminate_normal(self, monkeypatch): """Test terminating a preview when valid exists""" preview = PreviewSinks() preview.preview = self.MockPreview() preview.terminate() assert preview.preview is None