def test_freeze(): clip = BitmapClip([["R"], ["G"], ["B"]], fps=1) # 3 separate frames clip1 = freeze(clip, t=1, freeze_duration=1) target1 = BitmapClip([["R"], ["G"], ["G"], ["B"]], fps=1) assert clip1 == target1 clip2 = freeze(clip, t="end", freeze_duration=1) target2 = BitmapClip([["R"], ["G"], ["B"], ["B"]], fps=1) assert clip2 == target2 clip3 = freeze(clip, t=1, total_duration=4) target3 = BitmapClip([["R"], ["G"], ["G"], ["B"]], fps=1) assert clip3 == target3 clip4 = freeze(clip, t="end", total_duration=4, padding_end=1) target4 = BitmapClip([["R"], ["G"], ["G"], ["B"]], fps=1) assert clip4 == target4
def test_freeze(t, freeze_duration, total_duration, padding_end, output_frames): input_frames = ["R", "G", "B"] clip_duration = len(input_frames) # create BitmapClip with predefined set of colors, during 1 second each one clip = BitmapClip([list(color) for color in input_frames], fps=1).with_duration( clip_duration ) # build kwargs passed to `freeze` possible_kwargs = { "t": t, "freeze_duration": freeze_duration, "total_duration": total_duration, "padding_end": padding_end, } kwargs = { kw_name: kw_value for kw_name, kw_value in possible_kwargs.items() if kw_value is not None } # freeze clip if hasattr(output_frames, "__traceback__"): with pytest.raises(output_frames): freeze(clip, **kwargs) return else: freezed_clip = freeze(clip, **kwargs) # assert new duration expected_freeze_duration = ( freeze_duration if freeze_duration is not None else total_duration - clip_duration ) assert freezed_clip.duration == clip_duration + expected_freeze_duration # assert colors are the expected for i, color in enumerate(freezed_clip.iter_frames()): expected_color = list(BitmapClip.DEFAULT_COLOR_DICT[output_frames[i]]) assert list(color[0][0]) == expected_color