From 0f6bc271b1c080a6eeb398057c73f16f4c83e991 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Sat, 18 Oct 2025 03:28:16 +0200 Subject: [PATCH] Add tests for detecting tracks --- .../impl/MkvFileProcessorTest.java | 52 ++++++++++++++++++- .../util/FileInfoTestUtil.java | 2 + 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessorTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessorTest.java index f3c51c8..4d1bae2 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessorTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/MkvFileProcessorTest.java @@ -4,7 +4,6 @@ import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfo; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -14,7 +13,6 @@ import java.util.Set; import java.util.stream.Stream; import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.FileInfoTestUtil.*; -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.createFileInfo; import static org.junit.jupiter.api.Assertions.*; class MkvFileProcessorTest { @@ -39,4 +37,54 @@ class MkvFileProcessorTest { assertEquals(expectedMatch.getAudioLanguage(), info.getMatchedConfig().getAudioLanguage()); assertEquals(expectedMatch.getSubtitleLanguage(), info.getMatchedConfig().getSubtitleLanguage()); } + + private static Stream retrieveNonForcedTracks() { + return Stream.of( + Arguments.of(List.of(SUB_GER, SUB_ENG, SUB_GER_FORCED), List.of(SUB_GER, SUB_ENG)), + Arguments.of(List.of(SUB_GER, SUB_ENG), List.of(SUB_GER, SUB_ENG)), + Arguments.of(List.of(AUDIO_GER, SUB_GER, SUB_ENG), List.of(AUDIO_GER, SUB_GER, SUB_ENG)), + Arguments.of(List.of(AUDIO_GER), List.of(AUDIO_GER)), + Arguments.of(List.of(AUDIO_GER_FORCED), List.of()), + Arguments.of(List.of(), List.of()) + ); + } + + @ParameterizedTest + @MethodSource + void retrieveNonForcedTracks(List attributes, List expected) { + Config.getInstance().setPreferredSubtitles(Set.of()); + Config.getInstance().setForcedKeywords(Set.of("forced")); + MkvFileProcessor processor = new MkvFileProcessor(); + List actual = processor.retrieveNonForcedTracks(attributes); + + assertEquals(expected.size(), actual.size()); + for (int i = 0; i < expected.size(); i++) { + assertEquals(expected.get(i), actual.get(i)); + } + } + + private static Stream retrieveNonCommentaryTracks() { + return Stream.of( + Arguments.of(List.of(SUB_GER, SUB_ENG, AUDIO_GER_COMMENTARY), List.of(SUB_GER, SUB_ENG)), + Arguments.of(List.of(SUB_GER, SUB_ENG), List.of(SUB_GER, SUB_ENG)), + Arguments.of(List.of(AUDIO_GER, SUB_GER, SUB_ENG), List.of(AUDIO_GER, SUB_GER, SUB_ENG)), + Arguments.of(List.of(AUDIO_GER), List.of(AUDIO_GER)), + Arguments.of(List.of(AUDIO_GER_COMMENTARY), List.of()), + Arguments.of(List.of(), List.of()) + ); + } + + @ParameterizedTest + @MethodSource + void retrieveNonCommentaryTracks(List attributes, List expected) { + Config.getInstance().setPreferredSubtitles(Set.of()); + Config.getInstance().setCommentaryKeywords(Set.of("commentary")); + MkvFileProcessor processor = new MkvFileProcessor(); + List actual = processor.retrieveNonCommentaryTracks(attributes); + + assertEquals(expected.size(), actual.size()); + for (int i = 0; i < expected.size(); i++) { + assertEquals(expected.get(i), actual.get(i)); + } + } } \ No newline at end of file diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java index c713dc2..b54262b 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java @@ -10,6 +10,8 @@ public class FileInfoTestUtil { public static final FileAttribute AUDIO_ENG = new FileAttribute(1, "eng", "", false, false, LaneType.AUDIO); public static final FileAttribute AUDIO_GER_FORCED = new FileAttribute(0, "ger", "", false, true, LaneType.AUDIO); public static final FileAttribute AUDIO_ENG_FORCED = new FileAttribute(1, "eng", "", false, true, LaneType.AUDIO); + public static final FileAttribute AUDIO_GER_COMMENTARY = new FileAttribute(1, "ger", "commentary", false, false, LaneType.AUDIO); + public static final FileAttribute AUDIO_ENG_COMMENTARY = new FileAttribute(1, "eng", "commentary", false, false, LaneType.AUDIO); public static final FileAttribute SUB_GER_DEFAULT = new FileAttribute(0, "ger", "", true, false, LaneType.SUBTITLES); public static final FileAttribute SUB_ENG_DEFAULT = new FileAttribute(1, "eng", "", true, false, LaneType.SUBTITLES);