Skip to content

Commit 11129a1

Browse files
Copilotlucemia
andcommitted
Add more tests - improve coverage to 80% with 38 new tests
Co-authored-by: lucemia <432851+lucemia@users.noreply.github.com>
1 parent d28752d commit 11129a1

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

coverage.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/ffmpeg/ffprobe/tests/test_parse.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ def test_get_actual_type_nested_union() -> None:
3535
) # Should return the first non-None type
3636

3737

38+
def test_get_actual_type_types_union() -> None:
39+
"""Test _get_actual_type with types.UnionType (Python 3.10+)."""
40+
import types
41+
42+
# Test that it can handle types.UnionType properly
43+
if hasattr(types, "UnionType"):
44+
# Create a union type using the | operator (Python 3.10+)
45+
union_type = int | str | None
46+
assert _get_actual_type(union_type) is int
47+
48+
3849
def test_get_actual_type_string_annotation() -> None:
3950
# Simulate string annotation as might be found in dataclasses
4051
assert _get_actual_type("int") is int

src/ffmpeg/tests/test_schema.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
"""Tests for FFmpeg schema classes."""
2+
3+
from ..schema import Auto, Default, FFMpegOptionGroup
4+
5+
6+
def test_default_class() -> None:
7+
"""Test Default class for representing default values."""
8+
default = Default("23")
9+
assert str(default) == "23"
10+
assert isinstance(default, str)
11+
12+
13+
def test_auto_class() -> None:
14+
"""Test Auto class for representing auto-derived values."""
15+
auto = Auto("len(streams)")
16+
assert str(auto) == "len(streams)"
17+
assert isinstance(auto, Default)
18+
assert isinstance(auto, str)
19+
20+
21+
def test_ffmpeg_option_group_basic() -> None:
22+
"""Test FFMpegOptionGroup basic functionality."""
23+
options = FFMpegOptionGroup({"crf": 23, "preset": "fast"})
24+
assert options["crf"] == 23
25+
assert options["preset"] == "fast"
26+
27+
28+
def test_ffmpeg_option_group_as_av_options() -> None:
29+
"""Test as_av_options converts boolean to 0/1."""
30+
options = FFMpegOptionGroup(
31+
{"flag1": True, "flag2": False, "string": "value", "number": 42}
32+
)
33+
34+
av_options = options.as_av_options()
35+
36+
assert av_options["flag1"] == 1
37+
assert av_options["flag2"] == 0
38+
assert av_options["string"] == "value"
39+
assert av_options["number"] == 42
40+
41+
42+
def test_ffmpeg_option_group_as_av_options_none() -> None:
43+
"""Test as_av_options filters out None values."""
44+
options = FFMpegOptionGroup(
45+
{"keep": "value", "remove": None, "also_keep": 123}
46+
)
47+
48+
av_options = options.as_av_options()
49+
50+
assert "keep" in av_options
51+
assert "also_keep" in av_options
52+
assert "remove" not in av_options
53+
assert av_options["keep"] == "value"
54+
assert av_options["also_keep"] == 123
55+
56+
57+
def test_ffmpeg_option_group_as_av_options_empty() -> None:
58+
"""Test as_av_options with empty group."""
59+
options = FFMpegOptionGroup()
60+
av_options = options.as_av_options()
61+
assert av_options == {}
62+
63+
64+
def test_ffmpeg_option_group_as_av_options_all_none() -> None:
65+
"""Test as_av_options with all None values."""
66+
options = FFMpegOptionGroup({"a": None, "b": None, "c": None})
67+
av_options = options.as_av_options()
68+
assert av_options == {}

0 commit comments

Comments
 (0)