From bf68d0a206761a2cf70b6765160214a56b97a075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20T=C3=A2che?= Date: Sun, 25 Aug 2024 20:45:27 +0200 Subject: [PATCH] Adds more tests for api --- .../gtache/autosubtitle/TestTranslator.java | 38 --------- .../autosubtitle/archive/TestArchiver.java | 23 ++++++ .../subtitle/TestSubtitle.java | 3 +- .../TestSubtitleImporterExporter.java | 26 ++++++ .../converter/TestSubtitleConverter.java | 4 +- .../extractor/TestSubtitleExtractor.java | 5 +- .../translation/TestTranslator.java | 82 +++++++++++++++++++ .../archive/client/RemoteArchiver.java | 27 ++++++ .../client/RemoteVideoConverter.java | 40 +++++++++ .../client/RemoteVideoLoader.java | 17 ++++ .../client/RemoteSubtitleConverter.java | 29 +++++++ .../client/RemoteSubtitleExtractor.java | 26 ++++++ .../translation/client/RemoteTranslator.java | 34 ++++++++ 13 files changed, 307 insertions(+), 47 deletions(-) delete mode 100644 api/src/test/java/com/github/gtache/autosubtitle/TestTranslator.java create mode 100644 api/src/test/java/com/github/gtache/autosubtitle/archive/TestArchiver.java rename api/src/test/java/com/github/gtache/autosubtitle/{com/github/gtache/autosubtitle => }/subtitle/TestSubtitle.java (91%) create mode 100644 api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java rename api/src/test/java/com/github/gtache/autosubtitle/{com/github/gtache/autosubtitle => }/subtitle/converter/TestSubtitleConverter.java (90%) rename api/src/test/java/com/github/gtache/autosubtitle/{com/github/gtache/autosubtitle => }/subtitle/extractor/TestSubtitleExtractor.java (87%) create mode 100644 api/src/test/java/com/github/gtache/autosubtitle/translation/TestTranslator.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/archive/client/RemoteArchiver.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java create mode 100644 client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java diff --git a/api/src/test/java/com/github/gtache/autosubtitle/TestTranslator.java b/api/src/test/java/com/github/gtache/autosubtitle/TestTranslator.java deleted file mode 100644 index a97669b..0000000 --- a/api/src/test/java/com/github/gtache/autosubtitle/TestTranslator.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.github.gtache.autosubtitle; - -import com.github.gtache.autosubtitle.subtitle.Subtitle; -import com.github.gtache.autosubtitle.translation.Translator; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.util.Objects; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -class TestTranslator { - - private final Translator translator; - private final Subtitle subtitle; - - TestTranslator(@Mock final Translator translator, @Mock final Subtitle subtitle) { - this.translator = Objects.requireNonNull(translator); - this.subtitle = Objects.requireNonNull(subtitle); - } - - @Test - void testGetLanguage() { - when(translator.getLanguage(subtitle)).thenCallRealMethod(); - - final var text = "text"; - when(subtitle.content()).thenReturn(text); - - when(translator.getLanguage(text)).thenReturn(Language.FR); - assertEquals(Language.FR, translator.getLanguage(subtitle)); - verify(translator).getLanguage(text); - } -} diff --git a/api/src/test/java/com/github/gtache/autosubtitle/archive/TestArchiver.java b/api/src/test/java/com/github/gtache/autosubtitle/archive/TestArchiver.java new file mode 100644 index 0000000..74c3655 --- /dev/null +++ b/api/src/test/java/com/github/gtache/autosubtitle/archive/TestArchiver.java @@ -0,0 +1,23 @@ +package com.github.gtache.autosubtitle.archive; + +import org.junit.jupiter.api.Test; + +import java.nio.file.Paths; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +class TestArchiver { + + @Test + void testIsSupported() { + final var archiver = spy(Archiver.class); + when(archiver.archiveExtension()).thenReturn("test"); + assertTrue(archiver.isPathSupported(Paths.get("x.test"))); + assertFalse(archiver.isPathSupported(Paths.get("tes"))); + assertFalse(archiver.isPathSupported(Paths.get("test"))); + assertFalse(archiver.isPathSupported(Paths.get("test.txt"))); + } +} diff --git a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java similarity index 91% rename from api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java rename to api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java index 5d091ef..0d2bd3e 100644 --- a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java +++ b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitle.java @@ -1,6 +1,5 @@ -package com.github.gtache.autosubtitle.com.github.gtache.autosubtitle.subtitle; +package com.github.gtache.autosubtitle.subtitle; -import com.github.gtache.autosubtitle.subtitle.Subtitle; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; diff --git a/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java new file mode 100644 index 0000000..47c4cfd --- /dev/null +++ b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/TestSubtitleImporterExporter.java @@ -0,0 +1,26 @@ +package com.github.gtache.autosubtitle.subtitle; + +import com.github.gtache.autosubtitle.VideoInfo; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; + +import static org.mockito.Mockito.*; + +class TestSubtitleImporterExporter { + + + @Test + void testExportSubtitleCollection() throws IOException { + final var importExporter = spy(SubtitleImporterExporter.class); + final var collection = mock(SubtitleCollection.class); + final var videoInfo = Mockito.mock(VideoInfo.class); + final var file = mock(Path.class); + + importExporter.exportSubtitles(collection, videoInfo, file); + verify(importExporter).exportSubtitles(List.of(collection), videoInfo, file); + } +} diff --git a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java similarity index 90% rename from api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java rename to api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java index 54d95ee..ca310a4 100644 --- a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java +++ b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/converter/TestSubtitleConverter.java @@ -1,9 +1,7 @@ -package com.github.gtache.autosubtitle.com.github.gtache.autosubtitle.subtitle.converter; +package com.github.gtache.autosubtitle.subtitle.converter; import com.github.gtache.autosubtitle.subtitle.Subtitle; import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; -import com.github.gtache.autosubtitle.subtitle.converter.ParseException; -import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; diff --git a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java similarity index 87% rename from api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java rename to api/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java index 0956c1b..76d73ad 100644 --- a/api/src/test/java/com/github/gtache/autosubtitle/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java +++ b/api/src/test/java/com/github/gtache/autosubtitle/subtitle/extractor/TestSubtitleExtractor.java @@ -1,12 +1,9 @@ -package com.github.gtache.autosubtitle.com.github.gtache.autosubtitle.subtitle.extractor; +package com.github.gtache.autosubtitle.subtitle.extractor; import com.github.gtache.autosubtitle.Audio; import com.github.gtache.autosubtitle.Language; import com.github.gtache.autosubtitle.Video; import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; -import com.github.gtache.autosubtitle.subtitle.extractor.ExtractException; -import com.github.gtache.autosubtitle.subtitle.extractor.ExtractionModel; -import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; diff --git a/api/src/test/java/com/github/gtache/autosubtitle/translation/TestTranslator.java b/api/src/test/java/com/github/gtache/autosubtitle/translation/TestTranslator.java new file mode 100644 index 0000000..a9578b9 --- /dev/null +++ b/api/src/test/java/com/github/gtache/autosubtitle/translation/TestTranslator.java @@ -0,0 +1,82 @@ +package com.github.gtache.autosubtitle.translation; + +import com.github.gtache.autosubtitle.Language; +import com.github.gtache.autosubtitle.subtitle.Subtitle; +import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Objects; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class TestTranslator { + + private final Translator translator; + private final Subtitle subtitle; + private final Language from; + private final Language to; + + TestTranslator(@Mock final Translator translator, @Mock final Subtitle subtitle, @Mock final Language from, @Mock final Language to) { + this.translator = Objects.requireNonNull(translator); + this.subtitle = Objects.requireNonNull(subtitle); + this.from = Objects.requireNonNull(from); + this.to = Objects.requireNonNull(to); + } + + @Test + void testGetLanguage() { + when(translator.getLanguage(subtitle)).thenCallRealMethod(); + + final var text = "text"; + when(subtitle.content()).thenReturn(text); + + when(translator.getLanguage(text)).thenReturn(Language.FR); + assertEquals(Language.FR, translator.getLanguage(subtitle)); + verify(translator).getLanguage(text); + } + + @Test + void testTranslate() throws TranslationException { + when(translator.translate(anyString(), any(Language.class))).thenCallRealMethod(); + final var text = "text"; + when(translator.getLanguage(text)).thenReturn(from); + final var expected = "translated"; + when(translator.translate(text, from, to)).thenReturn(expected); + + assertEquals(expected, translator.translate(text, to)); + verify(translator).translate(text, from, to); + verify(translator).getLanguage(text); + } + + @Test + void testTranslateSubtitle() throws TranslationException { + when(translator.translate(any(Subtitle.class), any(Language.class))).thenCallRealMethod(); + when(translator.getLanguage(subtitle)).thenReturn(from); + final var expected = mock(Subtitle.class); + when(translator.translate(subtitle, from, to)).thenReturn(expected); + + assertEquals(expected, translator.translate(subtitle, to)); + verify(translator).translate(subtitle, from, to); + verify(translator).getLanguage(subtitle); + } + + @Test + void testTranslateCollection() throws TranslationException { + when(translator.translate(any(SubtitleCollection.class), any(Language.class))).thenCallRealMethod(); + final var collection = mock(SubtitleCollection.class); + final var text = "test"; + when(collection.text()).thenReturn(text); + when(translator.getLanguage(text)).thenReturn(from); + final var expected = mock(SubtitleCollection.class); + when(translator.translate(collection, from, to)).thenReturn(expected); + + assertEquals(expected, translator.translate(collection, to)); + verify(translator).translate(collection, from, to); + verify(translator).getLanguage(text); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/archive/client/RemoteArchiver.java b/client/src/main/java/com/github/gtache/autosubtitle/archive/client/RemoteArchiver.java new file mode 100644 index 0000000..d7ab213 --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/archive/client/RemoteArchiver.java @@ -0,0 +1,27 @@ +package com.github.gtache.autosubtitle.archive.client; + +import com.github.gtache.autosubtitle.archive.Archiver; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; + +/** + * {@link Archiver} using a remote API + */ +public class RemoteArchiver implements Archiver { + @Override + public void compress(final List files, final Path destination) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void decompress(final Path archive, final Path destination) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public String archiveExtension() { + throw new UnsupportedOperationException(); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java b/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java new file mode 100644 index 0000000..58bb319 --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoConverter.java @@ -0,0 +1,40 @@ +package com.github.gtache.autosubtitle.client; + +import com.github.gtache.autosubtitle.Audio; +import com.github.gtache.autosubtitle.Video; +import com.github.gtache.autosubtitle.VideoConverter; +import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Collection; + +/** + * {@link VideoConverter} using a remote API + */ +public class RemoteVideoConverter implements VideoConverter { + @Override + public Video addSoftSubtitles(final Video video, final Collection> subtitles) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void addSoftSubtitles(final Video video, final Collection> subtitles, final Path path) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public Video addHardSubtitles(final Video video, final SubtitleCollection subtitles) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void addHardSubtitles(final Video video, final SubtitleCollection subtitles, final Path path) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public Audio getAudio(final Video video) throws IOException { + throw new UnsupportedOperationException(); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java b/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java new file mode 100644 index 0000000..ac65ef2 --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/client/RemoteVideoLoader.java @@ -0,0 +1,17 @@ +package com.github.gtache.autosubtitle.client; + +import com.github.gtache.autosubtitle.Video; +import com.github.gtache.autosubtitle.VideoLoader; + +import java.io.IOException; +import java.nio.file.Path; + +/** + * {@link VideoLoader} using a remote API + */ +public class RemoteVideoLoader implements VideoLoader { + @Override + public Video loadVideo(final Path path) throws IOException { + throw new UnsupportedOperationException(); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java b/client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java new file mode 100644 index 0000000..4c2be7b --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/subtitle/converter/client/RemoteSubtitleConverter.java @@ -0,0 +1,29 @@ +package com.github.gtache.autosubtitle.subtitle.converter.client; + +import com.github.gtache.autosubtitle.VideoInfo; +import com.github.gtache.autosubtitle.subtitle.Subtitle; +import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; +import com.github.gtache.autosubtitle.subtitle.converter.ParseException; +import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter; + +/** + * {@link SubtitleConverter} using a remote API + * + * @param the type of subtitle + */ +public class RemoteSubtitleConverter implements SubtitleConverter { + @Override + public String format(final SubtitleCollection collection, final VideoInfo videoInfo) { + throw new UnsupportedOperationException(); + } + + @Override + public SubtitleCollection parse(final String content) throws ParseException { + throw new UnsupportedOperationException(); + } + + @Override + public String formatName() { + throw new UnsupportedOperationException(); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java b/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java new file mode 100644 index 0000000..87f0313 --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/subtitle/extractor/client/RemoteSubtitleExtractor.java @@ -0,0 +1,26 @@ +package com.github.gtache.autosubtitle.subtitle.extractor.client; + +import com.github.gtache.autosubtitle.Audio; +import com.github.gtache.autosubtitle.Language; +import com.github.gtache.autosubtitle.Video; +import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; +import com.github.gtache.autosubtitle.subtitle.extractor.ExtractException; +import com.github.gtache.autosubtitle.subtitle.extractor.ExtractionModel; +import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor; +import com.github.gtache.autosubtitle.subtitle.extractor.impl.AbstractSubtitleExtractor; + +/** + * {@link SubtitleExtractor} using a remote API + */ +public class RemoteSubtitleExtractor extends AbstractSubtitleExtractor { + + @Override + public SubtitleCollection extract(final Video video, final Language language, final ExtractionModel model) throws ExtractException { + throw new UnsupportedOperationException(); + } + + @Override + public SubtitleCollection extract(final Audio audio, final Language language, final ExtractionModel model) throws ExtractException { + throw new UnsupportedOperationException(); + } +} diff --git a/client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java b/client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java new file mode 100644 index 0000000..7d820ac --- /dev/null +++ b/client/src/main/java/com/github/gtache/autosubtitle/translation/client/RemoteTranslator.java @@ -0,0 +1,34 @@ +package com.github.gtache.autosubtitle.translation.client; + +import com.github.gtache.autosubtitle.Language; +import com.github.gtache.autosubtitle.subtitle.Subtitle; +import com.github.gtache.autosubtitle.subtitle.SubtitleCollection; +import com.github.gtache.autosubtitle.translation.TranslationException; +import com.github.gtache.autosubtitle.translation.Translator; + +/** + * {@link Translator} using a remote API + * + * @param the type of subtitle + */ +public class RemoteTranslator implements Translator { + @Override + public Language getLanguage(final String text) { + throw new UnsupportedOperationException(); + } + + @Override + public String translate(final String text, final Language from, final Language to) throws TranslationException { + throw new UnsupportedOperationException(); + } + + @Override + public T translate(final Subtitle subtitle, final Language from, final Language to) throws TranslationException { + throw new UnsupportedOperationException(); + } + + @Override + public SubtitleCollection translate(final SubtitleCollection collection, final Language from, final Language to) throws TranslationException { + throw new UnsupportedOperationException(); + } +}