Adds tests for API
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package com.github.gtache.autosubtitle;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestFile {
|
||||
|
||||
private final File file;
|
||||
|
||||
TestFile(@Mock final File file) {
|
||||
this.file = Objects.requireNonNull(file);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetInputStream(@TempDir final Path dir) throws IOException {
|
||||
final var path = dir.resolve("path");
|
||||
Files.writeString(path, "test");
|
||||
|
||||
when(file.getInputStream()).thenCallRealMethod();
|
||||
when(file.path()).thenReturn(path);
|
||||
try (final var in = file.getInputStream()) {
|
||||
assertEquals("test", new String(in.readAllBytes()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.github.gtache.autosubtitle;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
class TestLanguage {
|
||||
|
||||
@Test
|
||||
void testLanguage() {
|
||||
assertEquals("french", Language.FR.englishName());
|
||||
assertEquals("fr", Language.FR.iso2());
|
||||
assertEquals("fra", Language.FR.iso3());
|
||||
|
||||
assertEquals(Language.FR, Language.getLanguage("fr"));
|
||||
assertEquals(Language.FR, Language.getLanguage("FR"));
|
||||
assertEquals(Language.FR, Language.getLanguage("fra"));
|
||||
assertEquals(Language.FR, Language.getLanguage("FRA"));
|
||||
assertEquals(Language.FR, Language.getLanguage("french"));
|
||||
assertEquals(Language.FR, Language.getLanguage("French"));
|
||||
|
||||
assertNotNull(Language.getDefault());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.github.gtache.autosubtitle;
|
||||
|
||||
import com.github.gtache.autosubtitle.subtitle.Subtitle;
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.github.gtache.autosubtitle;
|
||||
|
||||
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.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestVideoInfo {
|
||||
|
||||
private final VideoInfo videoInfo;
|
||||
|
||||
TestVideoInfo(@Mock final VideoInfo videoInfo) {
|
||||
this.videoInfo = Objects.requireNonNull(videoInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAspectRatio() {
|
||||
when(videoInfo.aspectRatio()).thenCallRealMethod();
|
||||
|
||||
final var width = 30;
|
||||
final var height = 12;
|
||||
|
||||
when(videoInfo.width()).thenReturn(width);
|
||||
when(videoInfo.height()).thenReturn(height);
|
||||
|
||||
assertEquals(width / (double) height, videoInfo.aspectRatio());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.github.gtache.autosubtitle.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;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestSubtitle {
|
||||
|
||||
private final Subtitle subtitle;
|
||||
|
||||
TestSubtitle(@Mock final Subtitle subtitle) {
|
||||
this.subtitle = Objects.requireNonNull(subtitle);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDuration() {
|
||||
when(subtitle.duration()).thenCallRealMethod();
|
||||
|
||||
final var start = 1000L;
|
||||
final var end = 5000L;
|
||||
|
||||
when(subtitle.start()).thenReturn(start);
|
||||
when(subtitle.end()).thenReturn(end);
|
||||
|
||||
final var expected = Duration.ofMillis(end - start);
|
||||
assertEquals(expected, subtitle.duration());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testIsShowing() {
|
||||
when(subtitle.isShowing(anyLong())).thenCallRealMethod();
|
||||
|
||||
final var start = 1000L;
|
||||
final var end = 5000L;
|
||||
|
||||
when(subtitle.start()).thenReturn(start);
|
||||
when(subtitle.end()).thenReturn(end);
|
||||
|
||||
assertFalse(subtitle.isShowing(999L));
|
||||
assertTrue(subtitle.isShowing(1000L));
|
||||
assertTrue(subtitle.isShowing(3000L));
|
||||
assertTrue(subtitle.isShowing(5000L));
|
||||
assertFalse(subtitle.isShowing(5001L));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.github.gtache.autosubtitle.com.github.gtache.autosubtitle.subtitle.converter;
|
||||
|
||||
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;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestSubtitleConverter {
|
||||
|
||||
private final SubtitleConverter subtitleConverter;
|
||||
private final SubtitleCollection subtitleCollection;
|
||||
|
||||
TestSubtitleConverter(@Mock final SubtitleConverter subtitleConverter,
|
||||
@Mock final SubtitleCollection subtitleCollection) {
|
||||
this.subtitleConverter = Objects.requireNonNull(subtitleConverter);
|
||||
this.subtitleCollection = Objects.requireNonNull(subtitleCollection);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testParse(@TempDir final Path tempDir) throws ParseException, IOException {
|
||||
final var file = tempDir.resolve("test.srt");
|
||||
final var string = "test";
|
||||
Files.writeString(file, string);
|
||||
when(subtitleConverter.parse(file)).thenCallRealMethod();
|
||||
when(subtitleConverter.parse(string)).thenReturn(subtitleCollection);
|
||||
|
||||
assertEquals(subtitleCollection, subtitleConverter.parse(file));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testParseException(@TempDir final Path tempDir) throws ParseException {
|
||||
final var file = tempDir.resolve("test.srt");
|
||||
when(subtitleConverter.parse(file)).thenCallRealMethod();
|
||||
when(subtitleConverter.parse(anyString())).thenReturn(subtitleCollection);
|
||||
|
||||
assertThrows(ParseException.class, () -> subtitleConverter.parse(file));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCanParse(@TempDir final Path tempDir) {
|
||||
final var file = tempDir.resolve("test.srt");
|
||||
final var otherFile = tempDir.resolve("other.ass");
|
||||
when(subtitleConverter.formatName()).thenReturn("srt");
|
||||
when(subtitleConverter.canParse(any())).thenCallRealMethod();
|
||||
|
||||
assertTrue(subtitleConverter.canParse(file));
|
||||
assertFalse(subtitleConverter.canParse(otherFile));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.github.gtache.autosubtitle.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;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestSubtitleExtractor {
|
||||
|
||||
private final SubtitleExtractor subtitleExtractor;
|
||||
private final SubtitleCollection subtitleCollection;
|
||||
private final Audio audio;
|
||||
private final Video video;
|
||||
private final ExtractionModel extractionModel;
|
||||
|
||||
TestSubtitleExtractor(@Mock final SubtitleExtractor subtitleExtractor,
|
||||
@Mock final SubtitleCollection subtitleCollection,
|
||||
@Mock final Audio audio,
|
||||
@Mock final Video video,
|
||||
@Mock final ExtractionModel extractionModel) {
|
||||
this.subtitleExtractor = Objects.requireNonNull(subtitleExtractor);
|
||||
this.subtitleCollection = Objects.requireNonNull(subtitleCollection);
|
||||
this.audio = Objects.requireNonNull(audio);
|
||||
this.video = Objects.requireNonNull(video);
|
||||
this.extractionModel = Objects.requireNonNull(extractionModel);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExtractVideo() throws ExtractException {
|
||||
when(subtitleExtractor.extract(any(Video.class), any())).thenCallRealMethod();
|
||||
when(subtitleExtractor.extract(video, Language.AUTO, extractionModel)).thenReturn(subtitleCollection);
|
||||
|
||||
assertEquals(subtitleCollection, subtitleExtractor.extract(video, extractionModel));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExtractAudio() throws ExtractException {
|
||||
when(subtitleExtractor.extract(any(Audio.class), any())).thenCallRealMethod();
|
||||
when(subtitleExtractor.extract(audio, Language.AUTO, extractionModel)).thenReturn(subtitleCollection);
|
||||
|
||||
assertEquals(subtitleCollection, subtitleExtractor.extract(audio, extractionModel));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.github.gtache.autosubtitle.process;
|
||||
|
||||
|
||||
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.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestProcessRunner {
|
||||
|
||||
private final ProcessRunner processRunner;
|
||||
private final ProcessResult result;
|
||||
private final Process process;
|
||||
private final ProcessListener processListener;
|
||||
|
||||
TestProcessRunner(@Mock final ProcessRunner processRunner, @Mock final ProcessResult result,
|
||||
@Mock final Process process, @Mock final ProcessListener processListener) {
|
||||
this.processRunner = Objects.requireNonNull(processRunner);
|
||||
this.result = Objects.requireNonNull(result);
|
||||
this.process = Objects.requireNonNull(process);
|
||||
this.processListener = Objects.requireNonNull(processListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testRunVarargs() throws IOException {
|
||||
when(processRunner.run(List.of("arg1", "arg2"))).thenReturn(result);
|
||||
when(processRunner.run(any(String[].class))).thenCallRealMethod();
|
||||
|
||||
assertEquals(result, processRunner.run("arg1", "arg2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testStartVarargs() throws IOException {
|
||||
when(processRunner.start(List.of("arg1", "arg2"))).thenReturn(process);
|
||||
when(processRunner.start(any(String[].class))).thenCallRealMethod();
|
||||
|
||||
assertEquals(process, processRunner.start("arg1", "arg2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testStartListenVarargs() throws IOException {
|
||||
when(processRunner.startListen(List.of("arg1", "arg2"))).thenReturn(processListener);
|
||||
when(processRunner.startListen(any(String[].class))).thenCallRealMethod();
|
||||
|
||||
assertEquals(processListener, processRunner.startListen("arg1", "arg2"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.github.gtache.autosubtitle.setup;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class TestSetupStatus {
|
||||
|
||||
@Test
|
||||
void testIsInstalled() {
|
||||
assertFalse(SetupStatus.ERRORED.isInstalled());
|
||||
assertFalse(SetupStatus.NOT_INSTALLED.isInstalled());
|
||||
assertTrue(SetupStatus.SYSTEM_INSTALLED.isInstalled());
|
||||
assertTrue(SetupStatus.BUNDLE_INSTALLED.isInstalled());
|
||||
assertTrue(SetupStatus.UPDATE_AVAILABLE.isInstalled());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user