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