annotate media_processor/media_processor_test.c @ 217:7ef4c9d2a72d hg-web

[DO NOT PUSH] Random values.
author MrJuneJune <me@mrjunejune.com>
date Sun, 25 Jan 2026 10:44:04 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
217
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
1 #include "media_processor.h"
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
2 #include <stdio.h>
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3 #include <assert.h>
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4 #include <string.h>
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6 void test_detect_type() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 printf("Testing media_detect_type...\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 // Images
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
10 assert(media_detect_type("photo.jpg") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 assert(media_detect_type("photo.JPEG") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12 assert(media_detect_type("image.png") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 assert(media_detect_type("animation.gif") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14 assert(media_detect_type("modern.webp") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 assert(media_detect_type("apple.heic") == MEDIA_TYPE_IMAGE);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
16
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
17 // Videos
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
18 assert(media_detect_type("video.mp4") == MEDIA_TYPE_VIDEO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
19 assert(media_detect_type("movie.mov") == MEDIA_TYPE_VIDEO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20 assert(media_detect_type("clip.avi") == MEDIA_TYPE_VIDEO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21 assert(media_detect_type("stream.mkv") == MEDIA_TYPE_VIDEO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
22 assert(media_detect_type("web.webm") == MEDIA_TYPE_VIDEO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
23
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
24 // Audio
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
25 assert(media_detect_type("song.mp3") == MEDIA_TYPE_AUDIO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 assert(media_detect_type("audio.wav") == MEDIA_TYPE_AUDIO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27 assert(media_detect_type("music.flac") == MEDIA_TYPE_AUDIO);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29 // Unknown
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30 assert(media_detect_type("document.pdf") == MEDIA_TYPE_UNKNOWN);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31 assert(media_detect_type("archive.zip") == MEDIA_TYPE_UNKNOWN);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32 assert(media_detect_type("noextension") == MEDIA_TYPE_UNKNOWN);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
34 printf(" PASSED\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35 }
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
36
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
37 void test_get_extension() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 printf("Testing media_get_extension...\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
40 assert(strcmp(media_get_extension("file.jpg"), ".jpg") == 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
41 assert(strcmp(media_get_extension("path/to/file.mp4"), ".mp4") == 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42 assert(strcmp(media_get_extension("multiple.dots.png"), ".png") == 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43 assert(media_get_extension("noextension") == NULL);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44 assert(media_get_extension(NULL) == NULL);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 printf(" PASSED\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 }
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
49 void test_path_safety() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
50 printf("Testing media_path_is_safe...\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
51
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
52 // Safe paths
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
53 assert(media_path_is_safe("file.jpg") == true);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
54 assert(media_path_is_safe("folder/file.jpg") == true);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
55 assert(media_path_is_safe("a/b/c/file.jpg") == true);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
56
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
57 // Unsafe paths
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
58 assert(media_path_is_safe("../file.jpg") == false);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
59 assert(media_path_is_safe("folder/../file.jpg") == false);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
60 assert(media_path_is_safe("/absolute/path.jpg") == false);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
61 assert(media_path_is_safe(NULL) == false);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
62
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
63 printf(" PASSED\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
64 }
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
65
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
66 void test_generate_id() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
67 printf("Testing media_generate_id...\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
68
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
69 char* id1 = media_generate_id();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
70 char* id2 = media_generate_id();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
71
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
72 assert(id1 != NULL);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
73 assert(id2 != NULL);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
74 assert(strlen(id1) > 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
75 assert(strlen(id2) > 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
76 assert(strcmp(id1, id2) != 0); // Should be unique
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
77
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
78 free(id1);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
79 free(id2);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
80
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
81 printf(" PASSED\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
82 }
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
83
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
84 void test_default_opts() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
85 printf("Testing media_processor_opts_default...\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
86
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
87 MediaProcessorOpts opts = media_processor_opts_default("./output");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
88
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
89 assert(opts.output_dir != NULL);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
90 assert(strcmp(opts.output_dir, "./output") == 0);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
91 assert(opts.image_quality == 80);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
92 assert(opts.video_segment_duration == 6);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
93 assert(opts.generate_thumbnail == true);
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
94
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
95 printf(" PASSED\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
96 }
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
97
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
98 int main() {
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
99 printf("\n=== Media Processor Tests ===\n\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
100
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
101 test_detect_type();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
102 test_get_extension();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
103 test_path_safety();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
104 test_generate_id();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
105 test_default_opts();
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
106
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
107 printf("\n=== All tests passed! ===\n\n");
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
108 return 0;
7ef4c9d2a72d [DO NOT PUSH] Random values.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
109 }