|
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
|
|
|
|
from __future__ import division
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
from sigal.video import video_size, generate_video
|
|
|
|
|
|
|
|
|
|
CURRENT_DIR = os.path.dirname(__file__)
|
|
|
|
|
TEST_VIDEO = 'stallman software-freedom-day-low.ogv'
|
|
|
|
|
SRCFILE = os.path.join(CURRENT_DIR, 'sample', 'pictures', 'video', TEST_VIDEO)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_generate_video_fit_height(tmpdir):
|
|
|
|
|
"""largest fitting dimension is height"""
|
|
|
|
|
|
|
|
|
|
base, ext = os.path.splitext(TEST_VIDEO)
|
|
|
|
|
dstfile = str(tmpdir.join(base + '.webm'))
|
|
|
|
|
generate_video(SRCFILE, dstfile, (50, 100))
|
|
|
|
|
|
|
|
|
|
size_src = video_size(SRCFILE)
|
|
|
|
|
size_dst = video_size(dstfile)
|
|
|
|
|
|
|
|
|
|
assert size_dst[0] == 50
|
|
|
|
|
# less than 2% error on ratio
|
|
|
|
|
assert abs(size_dst[0]/size_dst[1] - size_src[0]/size_src[1]) < 2e-2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_generate_video_fit_width(tmpdir):
|
|
|
|
|
"""largest fitting dimension is width"""
|
|
|
|
|
|
|
|
|
|
base, ext = os.path.splitext(TEST_VIDEO)
|
|
|
|
|
dstfile = str(tmpdir.join(base + '.webm'))
|
|
|
|
|
generate_video(SRCFILE, dstfile, (100, 50))
|
|
|
|
|
|
|
|
|
|
size_src = video_size(SRCFILE)
|
|
|
|
|
size_dst = video_size(dstfile)
|
|
|
|
|
|
|
|
|
|
assert size_dst[1] == 50
|
|
|
|
|
# less than 2% error on ratio
|
|
|
|
|
assert abs(size_dst[0]/size_dst[1] - size_src[0]/size_src[1]) < 2e-2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_generate_video_dont_enlarge(tmpdir):
|
|
|
|
|
"""video dimensions should not be enlarged"""
|
|
|
|
|
|
|
|
|
|
base, ext = os.path.splitext(TEST_VIDEO)
|
|
|
|
|
dstfile = str(tmpdir.join(base + '.webm'))
|
|
|
|
|
generate_video(SRCFILE, dstfile, (1000, 1000))
|
|
|
|
|
|
|
|
|
|
size_src = video_size(SRCFILE)
|
|
|
|
|
size_dst = video_size(dstfile)
|
|
|
|
|
|
|
|
|
|
assert size_src == size_dst
|