Mercurial
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/media_processor/media_processor_test.c Sun Jan 25 10:44:04 2026 -0800 @@ -0,0 +1,109 @@ +#include "media_processor.h" +#include <stdio.h> +#include <assert.h> +#include <string.h> + +void test_detect_type() { + printf("Testing media_detect_type...\n"); + + // Images + assert(media_detect_type("photo.jpg") == MEDIA_TYPE_IMAGE); + assert(media_detect_type("photo.JPEG") == MEDIA_TYPE_IMAGE); + assert(media_detect_type("image.png") == MEDIA_TYPE_IMAGE); + assert(media_detect_type("animation.gif") == MEDIA_TYPE_IMAGE); + assert(media_detect_type("modern.webp") == MEDIA_TYPE_IMAGE); + assert(media_detect_type("apple.heic") == MEDIA_TYPE_IMAGE); + + // Videos + assert(media_detect_type("video.mp4") == MEDIA_TYPE_VIDEO); + assert(media_detect_type("movie.mov") == MEDIA_TYPE_VIDEO); + assert(media_detect_type("clip.avi") == MEDIA_TYPE_VIDEO); + assert(media_detect_type("stream.mkv") == MEDIA_TYPE_VIDEO); + assert(media_detect_type("web.webm") == MEDIA_TYPE_VIDEO); + + // Audio + assert(media_detect_type("song.mp3") == MEDIA_TYPE_AUDIO); + assert(media_detect_type("audio.wav") == MEDIA_TYPE_AUDIO); + assert(media_detect_type("music.flac") == MEDIA_TYPE_AUDIO); + + // Unknown + assert(media_detect_type("document.pdf") == MEDIA_TYPE_UNKNOWN); + assert(media_detect_type("archive.zip") == MEDIA_TYPE_UNKNOWN); + assert(media_detect_type("noextension") == MEDIA_TYPE_UNKNOWN); + + printf(" PASSED\n"); +} + +void test_get_extension() { + printf("Testing media_get_extension...\n"); + + assert(strcmp(media_get_extension("file.jpg"), ".jpg") == 0); + assert(strcmp(media_get_extension("path/to/file.mp4"), ".mp4") == 0); + assert(strcmp(media_get_extension("multiple.dots.png"), ".png") == 0); + assert(media_get_extension("noextension") == NULL); + assert(media_get_extension(NULL) == NULL); + + printf(" PASSED\n"); +} + +void test_path_safety() { + printf("Testing media_path_is_safe...\n"); + + // Safe paths + assert(media_path_is_safe("file.jpg") == true); + assert(media_path_is_safe("folder/file.jpg") == true); + assert(media_path_is_safe("a/b/c/file.jpg") == true); + + // Unsafe paths + assert(media_path_is_safe("../file.jpg") == false); + assert(media_path_is_safe("folder/../file.jpg") == false); + assert(media_path_is_safe("/absolute/path.jpg") == false); + assert(media_path_is_safe(NULL) == false); + + printf(" PASSED\n"); +} + +void test_generate_id() { + printf("Testing media_generate_id...\n"); + + char* id1 = media_generate_id(); + char* id2 = media_generate_id(); + + assert(id1 != NULL); + assert(id2 != NULL); + assert(strlen(id1) > 0); + assert(strlen(id2) > 0); + assert(strcmp(id1, id2) != 0); // Should be unique + + free(id1); + free(id2); + + printf(" PASSED\n"); +} + +void test_default_opts() { + printf("Testing media_processor_opts_default...\n"); + + MediaProcessorOpts opts = media_processor_opts_default("./output"); + + assert(opts.output_dir != NULL); + assert(strcmp(opts.output_dir, "./output") == 0); + assert(opts.image_quality == 80); + assert(opts.video_segment_duration == 6); + assert(opts.generate_thumbnail == true); + + printf(" PASSED\n"); +} + +int main() { + printf("\n=== Media Processor Tests ===\n\n"); + + test_detect_type(); + test_get_extension(); + test_path_safety(); + test_generate_id(); + test_default_opts(); + + printf("\n=== All tests passed! ===\n\n"); + return 0; +}