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