From a8551fdbd56983026788950f885a8a9331742e05 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Sat, 22 Apr 2023 20:30:35 +0200 Subject: [PATCH] Add tests --- .../model/FileInfoDto.java | 4 +- .../model/FileInfoDtoTest.java | 59 +++++++++++++++++++ .../util/DateUtilsTest.java | 21 +++++++ .../util/SetUtilsTest.java | 20 +++++++ .../util/TestUtil.java | 18 ++++++ 5 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/FileInfoDtoTest.java create mode 100644 src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtilsTest.java create mode 100644 src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/SetUtilsTest.java 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/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/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; + } }