Coverage for tests/streamwise_app/test_scene.py: 100%
30 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
1#!/usr/bin/env python3
2"""
3Unit tests for StreamCast.
4"""
5import sys
6import os
7import json
9from dataclasses import asdict
11# Add current path
12sys.path.append(os.getcwd())
14from tests.test_utils import temp_sys_path
16with temp_sys_path("apps"):
17 from scene import SceneSegment
20def test_scene_segment() -> None:
21 segment = SceneSegment(
22 scene_id=1,
23 start_frame=10,
24 end_frame=30,
25 start_sec=10.0,
26 end_sec=35.33
27 )
28 assert segment.duration_sec == 25.33
30 assert len(segment.frame_image_paths) == 0
31 segment.add_image_path("path/to/image1.png")
32 segment.add_image_path("path/to/image2.png")
33 assert len(segment.frame_image_paths) == 2
35 assert segment.descriptions == []
36 segment.add_description("A sunny beach scene.")
37 segment.add_description("Waves crashing on the shore.")
38 assert len(segment.descriptions) == 2
40 assert segment.get_start() == "00:00:10"
41 assert segment.get_end() == "00:00:35"
43 segment.transcript = "Scene transcript"
45 assert str(segment) is not None
46 expected_segment_str = \
47 "[ 10- 30, 10.0-35.3]: Scene transcript... | " \
48 "A sunny beach scene.... | " \
49 "Waves crashing on the shore.... | 2 images"
50 assert str(segment) == expected_segment_str
53def test_user_json_serialization() -> None:
54 segment = SceneSegment(
55 scene_id=2,
56 start_frame=100,
57 end_frame=200,
58 start_sec=100.0,
59 end_sec=150.33
60 )
62 json_str = json.dumps(asdict(segment))
63 data = json.loads(json_str)
65 assert data == {
66 "audio_path": None,
67 "descriptions": [],
68 "end_frame": 200,
69 "end_sec": 150.33,
70 "frame_image_paths": [],
71 "language": None,
72 "scene_id": 2,
73 "start_frame": 100,
74 "start_sec": 100.0,
75 "transcript": None,
76 "translation": None,
77 }