diff --git a/test/libmpv_test_track_selection.c b/test/libmpv_test_track_selection.c index ed27b986af..1227efaefc 100644 --- a/test/libmpv_test_track_selection.c +++ b/test/libmpv_test_track_selection.c @@ -27,8 +27,10 @@ static void check_string(const char *property, const char *expect) mpv_free(result_string); } -static void wait_for_file_load(void) +static void reload_file(const char *path) { + const char *cmd[] = {"loadfile", path, NULL}; + check_api_error(mpv_command(ctx, cmd)); bool loaded = false; while (!loaded) { mpv_event *event = wrap_wait_event(); @@ -46,63 +48,52 @@ static void test_track_selection(char *file, char *path) if (ret) fail("Test file, '%s', was not found!\n", path); - const char *cmd[] = {"loadfile", path, NULL}; if (strcmp(file, "eng_default.mkv") == 0) { // --no-config - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/sub/selected", "yes"); // --subs-falback=no check_api_error(mpv_set_property_string(ctx, "subs-fallback", "no")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("track-list/2/selected", "no"); } else if (strcmp(file, "eng_default_forced.mkv") == 0) { // --subs-fallback-forced=no check_api_error(mpv_set_property_string(ctx, "subs-fallback-forced", "no")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/sub/selected", "yes"); } else if (strcmp(file, "eng_forced_matching_audio.mkv") == 0) { // select forced track - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/sub/selected", "yes"); } else if (strcmp(file, "eng_forced_no_matching_audio.mkv") == 0) { // forced track should not be selected - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("track-list/2/selected", "no"); } else if (strcmp(file, "eng_forced_always_audio.mkv") == 0) { // forced track should be selected anyway despite no matching audio check_api_error(mpv_set_property_string(ctx, "subs-fallback-forced", "always")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/sub/selected", "yes"); } else if (strcmp(file, "eng_no_default.mkv") == 0) { // track should not be selected - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("track-list/2/selected", "no"); // --subs-fallback=yes check_api_error(mpv_set_property_string(ctx, "subs-fallback", "yes")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/sub/selected", "yes"); } else if (strcmp(file, "multilang.mkv") == 0) { // --alang=jpn should select forced jpn subs check_api_error(mpv_set_property_string(ctx, "alang", "jpn")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "jpn"); check_string("current-tracks/sub/lang", "jpn"); // --alang=pol should select default, non-forced ger subs check_api_error(mpv_set_property_string(ctx, "alang", "pol")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "pol"); check_string("current-tracks/sub/lang", "ger"); @@ -110,8 +101,7 @@ static void test_track_selection(char *file, char *path) check_api_error(mpv_set_property_string(ctx, "alang", "eng")); check_api_error(mpv_set_property_string(ctx, "slang", "eng")); check_api_error(mpv_set_property_string(ctx, "subs-with-matching-audio", "no")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "eng"); check_string("track-list/5/selected", "no"); check_string("track-list/6/selected", "no"); @@ -120,32 +110,28 @@ static void test_track_selection(char *file, char *path) // --subs-with-matching-audio=forced checks check_api_error(mpv_set_property_string(ctx, "subs-with-matching-audio", "forced")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "eng"); check_string("current-tracks/sub/lang", "eng"); // forced jpn subs should be selected check_api_error(mpv_set_property_string(ctx, "alang", "jpn")); check_api_error(mpv_set_property_string(ctx, "slang", "jpn")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "jpn"); check_string("current-tracks/sub/lang", "jpn"); // default+forced eng subs should be selected check_api_error(mpv_set_property_string(ctx, "alang", "ger")); check_api_error(mpv_set_property_string(ctx, "slang", "ger")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "ger"); check_string("current-tracks/sub/lang", "eng"); // eng audio and pol subs should be selected check_api_error(mpv_set_property_string(ctx, "alang", "it")); check_api_error(mpv_set_property_string(ctx, "slang", "pt,it,pol,ger")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "eng"); check_string("current-tracks/sub/lang", "pol"); @@ -154,8 +140,7 @@ static void test_track_selection(char *file, char *path) check_api_error(mpv_set_property_string(ctx, "slang", "jpn,pol")); check_api_error(mpv_set_property_string(ctx, "subs-with-matching-audio", "yes")); check_api_error(mpv_set_property_string(ctx, "subs-fallback-forced", "always")); - check_api_error(mpv_command(ctx, cmd)); - wait_for_file_load(); + reload_file(path); check_string("current-tracks/audio/lang", "ger"); check_string("current-tracks/sub/lang", "jpn"); }