You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/libs/enzyme/tests/test_subtitle.py

87 lines
3.8 KiB

# -*- coding: utf-8 -*-
from enzyme.subtitle import Subtitle, _print_time_range, _print_time
import unittest
import os
import io
import requests
import zipfile
import glob
# Test directory
TEST_DIR = os.path.join(os.path.dirname(__file__), os.path.splitext(__file__)[0])
def setUpModule():
if not os.path.exists(TEST_DIR):
r = requests.get('http://downloads.sourceforge.net/project/matroska/test_files/matroska_test_w1_1.zip')
with zipfile.ZipFile(io.BytesIO(r.content), 'r') as f:
f.extractall(TEST_DIR)
class SubtitleTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
file = 'test5.mkv'
stream = io.open(os.path.join(TEST_DIR, file), 'rb')
cls.subtitle = Subtitle(stream)
def test_subtitles_found(self):
subtitles = self.subtitle._subtitles
self.assertTrue('eng' in subtitles)
self.assertTrue('hun' in subtitles)
self.assertTrue('ger' in subtitles)
self.assertTrue('fre' in subtitles)
self.assertTrue('spa' in subtitles)
self.assertTrue('ita' in subtitles)
self.assertTrue('jpn' in subtitles)
self.assertTrue('und' in subtitles)
def test_write_subtitle_to_stream(self):
subtitle_stream = self.subtitle.write_subtitle_to_stream("eng")
self.assertIsInstance(subtitle_stream,io.StringIO,"Expecting a StringIO stream")
def test_write_subtitle_to_stream(self):
subtitle_streams = self.subtitle.write_subtitles_to_stream()
self.assertIn("eng", subtitle_streams, "Expecting a subtitle stream for language eng")
self.assertIsInstance(subtitle_streams["eng"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("hun", subtitle_streams, "Expecting a subtitle stream for language hun")
self.assertIsInstance(subtitle_streams["hun"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("ger", subtitle_streams, "Expecting a subtitle stream for language ger")
self.assertIsInstance(subtitle_streams["ger"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("fre", subtitle_streams, "Expecting a subtitle stream for language fre")
self.assertIsInstance(subtitle_streams["fre"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("spa", subtitle_streams, "Expecting a subtitle stream for language spa")
self.assertIsInstance(subtitle_streams["spa"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("ita", subtitle_streams, "Expecting a subtitle stream for language ita")
self.assertIsInstance(subtitle_streams["ita"],io.StringIO,"Expecting a StringIO stream")
self.assertIn("jpn", subtitle_streams, "Expecting a subtitle stream for language jpn")
self.assertIsInstance(subtitle_streams["jpn"],io.StringIO,"Expecting a StringIO stream")
def test_print_time(self):
self.assertEqual('0:00:00,0',_print_time(0))
self.assertEqual('0:00:00,1',_print_time(1))
self.assertEqual('0:00:00,999',_print_time(999))
self.assertEqual('0:00:01,0',_print_time(1000))
self.assertEqual('0:00:59,999',_print_time(1000*60-1))
self.assertEqual('0:01:00,0',_print_time(1000*60))
self.assertEqual('0:59:59,999',_print_time(1000*60*60-1))
self.assertEqual('1:00:00,0',_print_time(1000*60*60))
def test_print_time_range(self):
self.assertEqual('0:00:00,0 --> 0:00:00,0',_print_time_range(1000000,0,0,0))
self.assertEqual('0:01:00,0 --> 0:01:01,0',_print_time_range(1000000,0,60000,1000))
def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(SubtitleTestCase))
return suite
if __name__ == '__main__':
unittest.TextTestRunner().run(suite())