diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoader.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoader.java index bf48362..18d4daa 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoader.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoader.java @@ -93,7 +93,7 @@ public class ConfigLoader { } private static void exitIfHelp(CommandLine cmd, Options options, HelpFormatter formatter) { - if (cmd.hasOption("help")) { + if (cmd.hasOption(HELP.prop())) { formatter.printHelp(130, "java -jar MKVAudioSubtitlesChanger.jar -l ", "\nParameters:", options, "\nFeature requests and bug reports: https://github.com/RatzzFatzz/MKVAudioSubtitleChanger/issues"); diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDto.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDto.java index b98c4d4..8037fd9 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDto.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDto.java @@ -31,12 +31,12 @@ public class FileInfoDto { private boolean isSubtitleMatchDifferent() { return desiredSubtitleLane != null - && (defaultSubtitleLanes == null || !defaultSubtitleLanes.contains(desiredSubtitleLane) || defaultAudioLanes.size() > 1); + && (defaultSubtitleLanes == null || !defaultSubtitleLanes.contains(desiredSubtitleLane) || defaultSubtitleLanes.size() > 1); } private boolean isSubtitleOFF() { return desiredSubtitleLane == null && "OFF".equals(matchedConfig.getSubtitleLanguage()) && - (defaultAudioLanes != null || !defaultAudioLanes.isEmpty()); + (defaultSubtitleLanes != null && !defaultSubtitleLanes.isEmpty()); } public boolean areForcedTracksDifferent() { diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoaderTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoaderTest.java new file mode 100644 index 0000000..d78fab5 --- /dev/null +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigLoaderTest.java @@ -0,0 +1,44 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; + +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.PathUtils.TEST_FILE; +import static org.junit.jupiter.api.Assertions.*; + +class ConfigLoaderTest { + + @Test + void initConfig() { + String[] sut = new String[]{"-a", "ger:ger", "-l", TEST_FILE, + "-s", "-cf", "-n", + "-c", "2", + "-t", "4", + "-i", ".*[abc].*", + "-fk", "testForced", + "-ck", "testCommentary", + "-ps", "testPreferred" + }; + ConfigLoader.initConfig(sut); + + assertTrue(Config.getInstance().getLibraryPath().exists()); + assertEquals(List.of(new AttributeConfig("ger", "ger")), Config.getInstance().getAttributeConfig()); + + assertTrue(Config.getInstance().isSafeMode()); + assertTrue(Config.getInstance().isForceCoherent()); + assertTrue(Config.getInstance().isOnlyNewFiles()); + assertNotNull(Config.getInstance().getFilterDate()); + + assertEquals(2, Config.getInstance().getCoherent()); + assertEquals(4, Config.getInstance().getThreads()); + assertEquals(".*[abc].*", Config.getInstance().getIncludePattern().pattern()); + assertTrue(Config.getInstance().getForcedKeywords().contains("testForced")); + assertTrue(Config.getInstance().getCommentaryKeywords().contains("testCommentary")); + assertTrue(Config.getInstance().getPreferredSubtitles().contains("testPreferred")); + + assertNull(Config.getInstance().getConfigPath()); + + } +} \ No newline at end of file diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidatorTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidatorTest.java index a4d6842..b3e710a 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidatorTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidatorTest.java @@ -20,13 +20,12 @@ import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult. import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.INVALID; import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.LIBRARY; import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.CommandLineOptionsUtil.optionOf; +import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.PathUtils.TEST_DIR; +import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.PathUtils.TEST_FILE; import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.argumentsOf; import static org.junit.jupiter.api.Assertions.*; class PathValidatorTest { - private static final String TEST_DIR = "src/test/resources/test-dir"; - private static final String TEST_FILE = "src/test/resources/test-dir/test-file.mkv"; - private static CommandLineParser parser; private static Options options; diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDtoTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDtoTest.java new file mode 100644 index 0000000..d48b437 --- /dev/null +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDtoTest.java @@ -0,0 +1,59 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.model; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.Set; +import java.util.stream.Stream; + +import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.createFileInfo; +import static org.junit.jupiter.api.Assertions.*; + +class FileInfoDtoTest { + private static final FileAttribute AUDIO_GER_DEFAULT = new FileAttribute(0, "ger", "", true, false, LaneType.AUDIO); + private static final FileAttribute AUDIO_GER = new FileAttribute(0, "ger", "", false, false, LaneType.AUDIO); + private static final FileAttribute AUDIO_ENG_DEFAULT = new FileAttribute(1, "eng", "", true, false, LaneType.AUDIO); + private static final FileAttribute AUDIO_ENG = new FileAttribute(1, "eng", "", false, false, LaneType.AUDIO); + + private static final FileAttribute SUB_GER_DEFAULT = new FileAttribute(0, "ger", "", true, false, LaneType.SUBTITLES); + private static final FileAttribute SUB_GER = new FileAttribute(0, "ger", "", false, false, LaneType.SUBTITLES); + private static final FileAttribute SUB_ENG_DEFAULT = new FileAttribute(1, "eng", "", true, false, LaneType.SUBTITLES); + private static final FileAttribute SUB_ENG = new FileAttribute(1, "eng", "", false, false, LaneType.SUBTITLES); + + + private static Stream isAudioDifferent() { + return Stream.of( + Arguments.of(createFileInfo(Set.of(AUDIO_GER_DEFAULT), AUDIO_GER_DEFAULT), false), + Arguments.of(createFileInfo(Set.of(AUDIO_GER_DEFAULT), AUDIO_ENG), true), + Arguments.of(createFileInfo(Set.of(AUDIO_GER_DEFAULT, AUDIO_ENG_DEFAULT), AUDIO_GER_DEFAULT), true), + Arguments.of(createFileInfo(Set.of(), AUDIO_GER), true), + Arguments.of(createFileInfo(null, AUDIO_GER), true) + ); + } + + @ParameterizedTest + @MethodSource + void isAudioDifferent(FileInfoDto underTest, boolean expected) { + assertEquals(expected, underTest.isAudioDifferent()); + } + + private static Stream isSubtitleDifferent() { + return Stream.of( + Arguments.of(createFileInfo(Set.of(SUB_GER_DEFAULT), SUB_GER_DEFAULT, new AttributeConfig("", "ger")), false), + Arguments.of(createFileInfo(Set.of(SUB_GER_DEFAULT), SUB_ENG, new AttributeConfig("", "eng")), true), + Arguments.of(createFileInfo(Set.of(SUB_GER_DEFAULT, SUB_ENG_DEFAULT), SUB_ENG, new AttributeConfig("", "eng")), true), + Arguments.of(createFileInfo(Set.of(), SUB_ENG, new AttributeConfig("", "ger")), true), + Arguments.of(createFileInfo(null, SUB_GER, new AttributeConfig("", "ger")), true), + Arguments.of(createFileInfo(null, null, new AttributeConfig("", "OFF")), false), + Arguments.of(createFileInfo(Set.of(), null, new AttributeConfig("", "OFF")), false), + Arguments.of(createFileInfo(Set.of(SUB_GER_DEFAULT), null, new AttributeConfig("", "OFF")), true) + ); + } + + @ParameterizedTest + @MethodSource + void isSubtitleDifferent(FileInfoDto underTest, boolean expected) { + assertEquals(expected, underTest.isSubtitleDifferent()); + } +} \ No newline at end of file diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java new file mode 100644 index 0000000..3ff73c3 --- /dev/null +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java @@ -0,0 +1,21 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; + +import org.junit.jupiter.api.Test; + +import java.util.Date; + +import static org.junit.jupiter.api.Assertions.*; + +class DateUtilsTest { + + @Test + void convert() { + Date expectedDate = new Date(0); + String expectedString = "01.01.1970-01:00:00"; + + assertEquals(expectedDate, DateUtils.convert(0)); + assertEquals(expectedDate, DateUtils.convert(expectedString, expectedDate)); + assertEquals(expectedDate, DateUtils.convert("1234;15", expectedDate)); + assertEquals(expectedString, DateUtils.convert(expectedDate)); + } +} \ No newline at end of file diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/PathUtils.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/PathUtils.java new file mode 100644 index 0000000..8024523 --- /dev/null +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/PathUtils.java @@ -0,0 +1,6 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; + +public class PathUtils { + public static final String TEST_DIR = "src/test/resources/test-dir"; + public static final String TEST_FILE = "src/test/resources/test-dir/test-file.mkv"; +} diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtilsTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtilsTest.java new file mode 100644 index 0000000..a8c18c3 --- /dev/null +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtilsTest.java @@ -0,0 +1,20 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; + +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.*; + +class SetUtilsTest { + + @Test + void retainOf() { + List list1 = List.of(1, 2, 3, 4, 5); + List list2 = List.of(2, 4, 6, 8, 10); + Set expected = Set.of(2, 4); + + assertEquals(expected, SetUtils.retainOf(list1, list2)); + } +} \ No newline at end of file diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/TestUtil.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/TestUtil.java index ffd452a..960e383 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/TestUtil.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/TestUtil.java @@ -1,10 +1,14 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfoDto; import org.junit.jupiter.params.provider.Arguments; import java.util.Arrays; +import java.util.Set; import static java.util.stream.Collectors.joining; @@ -25,4 +29,18 @@ public class TestUtil { return Arguments.of(property, required, append, yaml, cmd, result, expectedSize); } + public static FileInfoDto createFileInfo(Set defaultAudio, FileAttribute desiredAudio) { + FileInfoDto fileInfoDto = new FileInfoDto(null); + fileInfoDto.setDefaultAudioLanes(defaultAudio); + fileInfoDto.setDesiredAudioLane(desiredAudio); + return fileInfoDto; + } + + public static FileInfoDto createFileInfo(Set defaultSubtitle, FileAttribute desiredSubtitle, AttributeConfig config) { + FileInfoDto fileInfoDto = new FileInfoDto(null); + fileInfoDto.setDefaultSubtitleLanes(defaultSubtitle); + fileInfoDto.setDesiredSubtitleLane(desiredSubtitle); + fileInfoDto.setMatchedConfig(config); + return fileInfoDto; + } }