|
217
|
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 }
|