1
0
mirror of https://github.com/gryf/pygtktalog.git synced 2025-12-17 11:30:19 +01:00

Clean up old files. Repair unit tests

This commit is contained in:
2016-08-19 18:54:22 +02:00
parent 4eac6820c5
commit 63f2d6fc11
83 changed files with 558 additions and 17194 deletions

364
tests/video_test.py Normal file
View File

@@ -0,0 +1,364 @@
"""
Project: pyGTKtalog
Description: Tests for Video class.
Type: test
Author: Roman 'gryf' Dobosz, gryf73@gmail.com
Created: 2008-12-15
"""
import os
import unittest
import PIL
from pygtktalog.video import Video
DATA = {"m1.avi": """ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_FILENAME=m1.avi
ID_DEMUXER=avi
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=46184
ID_VIDEO_WIDTH=128
ID_VIDEO_HEIGHT=96
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_START_TIME=0.00
ID_LENGTH=4.03
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffh264
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=mpg123
ID_EXIT=EOF
""",
"m.avi": """ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_FILENAME=m.avi
ID_DEMUXER=avi
ID_VIDEO_FORMAT=XVID
ID_VIDEO_BITRATE=313536
ID_VIDEO_WIDTH=128
ID_VIDEO_HEIGHT=96
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=85
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_START_TIME=0.00
ID_LENGTH=4.03
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffodivx
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=mpg123
ID_EXIT=EOF""",
"m.mkv": """ID_VIDEO_ID=0
ID_AUDIO_ID=0
ID_CLIP_INFO_NAME0=title
ID_CLIP_INFO_VALUE0=Avidemux
ID_CLIP_INFO_NAME1=encoder
ID_CLIP_INFO_VALUE1=Lavf51.12.1
ID_CLIP_INFO_N=2
ID_FILENAME=m.mkv
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=MP4V
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=128
ID_VIDEO_HEIGHT=96
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=8192
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=1
ID_START_TIME=0.00
ID_LENGTH=4.07
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffodivx
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=1
ID_AUDIO_CODEC=ffac3
ID_EXIT=EOF""",
"m.mpg": """ID_VIDEO_ID=0
ID_FILENAME=m.mpg
ID_DEMUXER=mpeges
ID_VIDEO_FORMAT=0x10000001
ID_VIDEO_BITRATE=2200000
ID_VIDEO_WIDTH=128
ID_VIDEO_HEIGHT=96
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_START_TIME=0.00
ID_LENGTH=0.97
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffmpeg1
ID_EXIT=EOF""",
"m.ogm": """ID_VIDEO_ID=0
ID_AUDIO_ID=0
ID_FILENAME=m.ogm
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=160
ID_VIDEO_HEIGHT=120
ID_VIDEO_FPS=30.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=8192
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=1
ID_START_TIME=0.00
ID_LENGTH=4.00
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffh264
ID_AUDIO_BITRATE=128000
ID_AUDIO_RATE=22050
ID_AUDIO_NCH=1
ID_AUDIO_CODEC=ffac3
ID_EXIT=EOF""",
"m.wmv":"""ID_AUDIO_ID=1
ID_VIDEO_ID=2
ID_FILENAME=m.wmv
ID_DEMUXER=asf
ID_VIDEO_FORMAT=WMV3
ID_VIDEO_BITRATE=1177000
ID_VIDEO_WIDTH=852
ID_VIDEO_HEIGHT=480
ID_VIDEO_FPS=1000.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=353
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_START_TIME=4.00
ID_LENGTH=4656.93
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffwmv3
ID_AUDIO_BITRATE=64028
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=ffwmav2
ID_EXIT=EOF""",
"m.mp4": """ID_VIDEO_ID=0
ID_AUDIO_ID=0
ID_AID_0_LANG=unk
ID_CLIP_INFO_NAME0=major_brand
ID_CLIP_INFO_VALUE0=isom
ID_CLIP_INFO_NAME1=minor_version
ID_CLIP_INFO_VALUE1=512
ID_CLIP_INFO_NAME2=compatible_brands
ID_CLIP_INFO_VALUE2=isomiso2avc1mp41
ID_CLIP_INFO_NAME3=encoder
ID_CLIP_INFO_VALUE3=Lavf56.25.101
ID_CLIP_INFO_N=4
ID_FILENAME=m.mp4
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=1263573
ID_VIDEO_WIDTH=720
ID_VIDEO_HEIGHT=404
ID_VIDEO_FPS=25.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=MP4A
ID_AUDIO_BITRATE=155088
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=2
ID_START_TIME=0.00
ID_LENGTH=69.18
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffh264
ID_AUDIO_BITRATE=155082
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=ffaac
ID_EXIT=EOF"""}
# TODO: exchange this with mock
class Readlines(object):
def __init__(self, key=None):
self.data = DATA.get(key, "")
def readlines(self):
return self.data.split('\n')
def mock_popen(command):
key = None
if 'midentify' in command:
key = command.split('"')[1]
elif 'jpeg:outdir' in command:
# simulate capture for mplayer
img_dir = command.split('"')[-2]
img = PIL.Image.new('RGBA', (320, 200))
with open(os.path.join(img_dir, "00000001.jpg"), "wb") as fobj:
img.save(fobj)
return Readlines(key)
os.popen = mock_popen
class TestVideo(unittest.TestCase):
"""test class for retrive midentify script output"""
def test_avi(self):
"""test mock avi file, should return dict with expected values"""
avi = Video("m.avi")
self.assertTrue(len(avi.tags) != 0, "result should have lenght > 0")
self.assertEqual(avi.tags['audio_format'], '85')
self.assertEqual(avi.tags['width'], 128)
self.assertEqual(avi.tags['audio_no_channels'], 2)
self.assertEqual(avi.tags['height'], 96)
self.assertEqual(avi.tags['video_format'], 'xvid')
self.assertEqual(avi.tags['length'], 4)
self.assertEqual(avi.tags['audio_codec'], 'mpg123')
self.assertEqual(avi.tags['video_codec'], 'ffodivx')
self.assertEqual(avi.tags['duration'], '00:00:04')
self.assertEqual(avi.tags['container'], 'avi')
def test_avi2(self):
"""test another mock avi file, should return dict with expected
values"""
avi = Video("m1.avi")
self.assertTrue(len(avi.tags) != 0, "result should have lenght > 0")
self.assertEqual(avi.tags['audio_format'], '85')
self.assertEqual(avi.tags['width'], 128)
self.assertEqual(avi.tags['audio_no_channels'], 2)
self.assertEqual(avi.tags['height'], 96)
self.assertEqual(avi.tags['video_format'], 'h264')
self.assertEqual(avi.tags['length'], 4)
self.assertEqual(avi.tags['audio_codec'], 'mpg123')
self.assertEqual(avi.tags['video_codec'], 'ffh264')
self.assertEqual(avi.tags['duration'], '00:00:04')
self.assertEqual(avi.tags['container'], 'avi')
def test_mkv(self):
"""test mock mkv file, should return dict with expected values"""
mkv = Video("m.mkv")
self.assertTrue(len(mkv.tags) != 0, "result should have lenght > 0")
self.assertEqual(mkv.tags['audio_format'], '8192')
self.assertEqual(mkv.tags['width'], 128)
self.assertTrue(mkv.tags['audio_no_channels'] in (1, 2))
self.assertEqual(mkv.tags['height'], 96)
self.assertEqual(mkv.tags['video_format'], 'mp4v')
self.assertEqual(mkv.tags['length'], 4)
self.assertTrue(mkv.tags['audio_codec'] in ('a52', 'ffac3'))
self.assertEqual(mkv.tags['video_codec'], 'ffodivx')
self.assertEqual(mkv.tags['duration'], '00:00:04')
self.assertTrue(mkv.tags['container'] in ('mkv', 'lavfpref'))
def test_mpg(self):
"""test mock mpg file, should return dict with expected values"""
mpg = Video("m.mpg")
self.assertTrue(len(mpg.tags) != 0, "result should have lenght > 0")
self.assertFalse(mpg.tags.has_key('audio_format'))
self.assertEqual(mpg.tags['width'], 128)
self.assertFalse(mpg.tags.has_key('audio_no_channels'))
self.assertEqual(mpg.tags['height'], 96)
self.assertEqual(mpg.tags['video_format'], '0x10000001')
self.assertFalse(mpg.tags.has_key('lenght'))
self.assertFalse(mpg.tags.has_key('audio_codec'))
self.assertEqual(mpg.tags['video_codec'], 'ffmpeg1')
self.assertFalse(mpg.tags.has_key('duration'))
self.assertEqual(mpg.tags['container'], 'mpeges')
def test_ogm(self):
"""test mock ogm file, should return dict with expected values"""
ogm = Video("m.ogm")
self.assertTrue(len(ogm.tags) != 0, "result should have lenght > 0")
self.assertEqual(ogm.tags['audio_format'], '8192')
self.assertEqual(ogm.tags['width'], 160)
self.assertTrue(ogm.tags['audio_no_channels'] in (1, 2))
self.assertEqual(ogm.tags['height'], 120)
self.assertEqual(ogm.tags['video_format'], 'h264')
self.assertEqual(ogm.tags['length'], 4)
self.assertTrue(ogm.tags['audio_codec'] in ('a52', 'ffac3'))
self.assertEqual(ogm.tags['video_codec'], 'ffh264')
self.assertEqual(ogm.tags['duration'], '00:00:04')
self.assertTrue(ogm.tags['container'] in ('ogg', 'lavfpref'))
def test_wmv(self):
"""test mock wmv file, should return dict with expected values"""
wmv = Video("m.wmv")
self.assertTrue(len(wmv.tags) != 0, "result should have lenght > 0")
self.assertEqual(wmv.tags['audio_format'], '353')
self.assertEqual(wmv.tags['width'], 852)
self.assertEqual(wmv.tags['audio_no_channels'], 2)
self.assertEqual(wmv.tags['height'], 480)
self.assertEqual(wmv.tags['video_format'], 'wmv3')
self.assertEqual(wmv.tags['length'], 4656)
self.assertEqual(wmv.tags['audio_codec'], 'ffwmav2')
self.assertEqual(wmv.tags['video_codec'], 'ffwmv3')
self.assertEqual(wmv.tags['duration'], '01:17:32')
self.assertEqual(wmv.tags['container'], 'asf')
def test_mp4(self):
"""test mock mp4 file, should return dict with expected values"""
mp4 = Video("m.mp4")
self.assertTrue(len(mp4.tags) != 0, "result should have lenght > 0")
self.assertEqual(mp4.tags['audio_format'], 'mp4a')
self.assertEqual(mp4.tags['width'], 720)
self.assertEqual(mp4.tags['audio_no_channels'], 2)
self.assertEqual(mp4.tags['height'], 404)
self.assertEqual(mp4.tags['video_format'], 'h264')
self.assertEqual(mp4.tags['length'], 69)
self.assertEqual(mp4.tags['audio_codec'], 'ffaac')
self.assertEqual(mp4.tags['video_codec'], 'ffh264')
self.assertEqual(mp4.tags['duration'], '00:01:09')
self.assertEqual(mp4.tags['container'], 'lavfpref')
def test_capture(self):
"""test capture with some small movie and play a little with tags"""
avi = Video("m.avi")
filename = avi.capture()
self.assertTrue(filename != None)
self.assertTrue(os.path.exists(filename))
file_size = os.stat(filename)[6]
self.assertAlmostEqual(file_size/10000.0, 0.151, 0)
os.unlink(filename)
for length in (480, 380, 4):
avi.tags['length'] = length
filename = avi.capture()
self.assertTrue(filename is not None)
os.unlink(filename)
avi.tags['length'] = 3
self.assertTrue(avi.capture() is None)
avi.tags['length'] = 4
avi.tags['width'] = 0
self.assertTrue(avi.capture() is None)
avi.tags['width'] = 1025
filename = avi.capture()
self.assertTrue(filename is not None)
os.unlink(filename)
del(avi.tags['length'])
self.assertTrue(avi.capture() is None)
self.assertTrue(len(str(avi)) > 0)
if __name__ == "__main__":
os.chdir(os.path.join(os.path.abspath(os.path.dirname(__file__)), "../"))
unittest.main()