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.
87 lines
3.8 KiB
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())
|