Adds some tests, cleanup a bit

This commit is contained in:
Guillaume Tâche
2024-09-20 08:36:52 +02:00
parent 17086a87ef
commit 703a4c71ae
47 changed files with 1122 additions and 182 deletions

View File

@@ -2,12 +2,12 @@ package com.github.gtache.autosubtitle.archive.impl;
import com.github.gtache.autosubtitle.archive.Archiver;
import com.github.gtache.autosubtitle.archive.ArchiverProvider;
import org.junit.jupiter.api.BeforeEach;
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.Collection;
import java.util.Map;
import java.util.Objects;
@@ -22,16 +22,20 @@ class TestArchiverProviderImpl {
private final ArchiverProvider archiverProvider;
TestArchiverProviderImpl(@Mock final Archiver zipArchiver, @Mock final Archiver rarArchiver) {
when(zipArchiver.archiveExtension()).thenReturn("zip");
when(rarArchiver.archiveExtension()).thenReturn("rar");
this.zipArchiver = Objects.requireNonNull(zipArchiver);
this.rarArchiver = Objects.requireNonNull(rarArchiver);
this.archiverProvider = new ArchiverProviderImpl(Map.of("zip", zipArchiver, "rar", rarArchiver));
}
@BeforeEach
void beforeEach() {
when(zipArchiver.archiveExtension()).thenReturn("zip");
when(rarArchiver.archiveExtension()).thenReturn("rar");
}
@Test
void testAllArchivers() {
final Collection<Archiver> allArchivers = archiverProvider.allArchivers();
final var allArchivers = archiverProvider.allArchivers();
assertEquals(2, allArchivers.size());
assertTrue(allArchivers.contains(zipArchiver));
assertTrue(allArchivers.contains(rarArchiver));

View File

@@ -29,13 +29,18 @@ class TestZipDecompresser {
@Test
void testCompress() {
assertThrows(UnsupportedOperationException.class, () -> zipDecompresser.compress(List.of(Paths.get("file.txt")), Paths.get("target")));
final var paths = List.of(Paths.get("file.txt"));
final var target = Paths.get("target");
assertThrows(UnsupportedOperationException.class, () -> zipDecompresser.compress(paths, target));
}
@Test
void testDecompress(@TempDir final Path tempDir) throws IOException {
final var file = tempDir.resolve("test.zip");
try (final var in = getClass().getResourceAsStream("in.zip")) {
if (in == null) {
throw new IOException("in.zip not found");
}
Files.copy(in, file);
}
zipDecompresser.decompress(file, tempDir);
@@ -57,6 +62,8 @@ class TestZipDecompresser {
@Test
void testIllegal() {
assertThrows(IllegalArgumentException.class, () -> zipDecompresser.decompress(Paths.get("file.txt"), Paths.get("target")));
final var source = Paths.get("source");
final var target = Paths.get("target");
assertThrows(IllegalArgumentException.class, () -> zipDecompresser.decompress(source, target));
}
}

View File

@@ -21,7 +21,7 @@ class TestFileAudioImpl {
private final Path path;
private final AudioInfo info;
TestFileAudioImpl(@Mock final Path path, @Mock final AudioInfo info) throws IOException {
TestFileAudioImpl(@Mock final Path path, @Mock final AudioInfo info) {
this.path = requireNonNull(path);
this.info = requireNonNull(info);
}

View File

@@ -20,7 +20,7 @@ class TestMemoryAudioImpl {
private final Supplier<InputStream> supplier;
private final AudioInfo info;
TestMemoryAudioImpl(@Mock InputStream inputStream, @Mock AudioInfo info) {
TestMemoryAudioImpl(@Mock final InputStream inputStream, @Mock final AudioInfo info) {
this.supplier = () -> requireNonNull(inputStream);
this.info = requireNonNull(info);
}

View File

@@ -19,7 +19,7 @@ class TestMemoryVideoImpl {
private final Supplier<InputStream> supplier;
private final VideoInfo info;
TestMemoryVideoImpl(@Mock InputStream inputStream, @Mock VideoInfo info) {
TestMemoryVideoImpl(@Mock final InputStream inputStream, @Mock final VideoInfo info) {
this.supplier = () -> requireNonNull(inputStream);
this.info = requireNonNull(info);
}

View File

@@ -1,5 +1,6 @@
package com.github.gtache.autosubtitle.impl;
import com.github.gtache.autosubtitle.VideoInfo;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -11,17 +12,18 @@ class TestVideoInfoImpl {
private final int width;
private final int height;
private final long duration;
private final VideoInfo videoInfo;
TestVideoInfoImpl() {
this.videoFormat = "format";
this.width = 1;
this.height = 2;
this.duration = 3;
this.videoInfo = new VideoInfoImpl(videoFormat, width, height, duration);
}
@Test
void testGetters() {
final var videoInfo = new VideoInfoImpl(videoFormat, width, height, duration);
assertEquals(videoFormat, videoInfo.format());
assertEquals(width, videoInfo.width());
assertEquals(height, videoInfo.height());

View File

@@ -1,6 +1,7 @@
package com.github.gtache.autosubtitle.process.impl;
import com.github.gtache.autosubtitle.process.ProcessListener;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -21,11 +22,15 @@ import static org.mockito.Mockito.when;
class TestProcessListenerImpl {
private final Process process;
private final ProcessListener listener;
private ProcessListener listener;
TestProcessListenerImpl(@Mock Process process) {
final var inputStream = new ByteArrayInputStream("line1\nline2\nline3".getBytes());
TestProcessListenerImpl(@Mock final Process process) {
this.process = Objects.requireNonNull(process);
}
@BeforeEach
void beforeEach() {
final var inputStream = new ByteArrayInputStream("line1\nline2\nline3".getBytes());
when(process.getInputStream()).thenReturn(inputStream);
this.listener = new ProcessListenerImpl(process);
}

View File

@@ -30,7 +30,6 @@ class TestAbstractSetupManager {
private final SetupListener listener2;
private final SetupEvent event;
private final SetupAction setupAction;
private final ProcessRunner processRunner;
private final HttpClient httpClient;
TestAbstractSetupManager(@Mock final SetupListener listener1,
@@ -44,7 +43,6 @@ class TestAbstractSetupManager {
this.listener2 = requireNonNull(listener2);
this.event = requireNonNull(event);
this.setupAction = requireNonNull(setupAction);
this.processRunner = requireNonNull(processRunner);
this.httpClient = requireNonNull(httpClient);
}
@@ -247,15 +245,15 @@ class TestAbstractSetupManager {
}
@Override
public void install() throws SetupException {
public void install() {
}
@Override
public void uninstall() throws SetupException {
public void uninstall() {
}
@Override
public void update() throws SetupException {
public void update() {
}
}
}

View File

@@ -2,11 +2,13 @@ package com.github.gtache.autosubtitle.subtitle.converter.impl;
import com.github.gtache.autosubtitle.Language;
import com.github.gtache.autosubtitle.VideoInfo;
import com.github.gtache.autosubtitle.subtitle.Subtitle;
import com.github.gtache.autosubtitle.subtitle.converter.ParseException;
import com.github.gtache.autosubtitle.subtitle.impl.FontImpl;
import com.github.gtache.autosubtitle.subtitle.impl.SubtitleCollectionImpl;
import com.github.gtache.autosubtitle.subtitle.impl.SubtitleImpl;
import com.github.gtache.autosubtitle.translation.Translator;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -24,7 +26,7 @@ import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class TestASSSubtitleConverter {
private final Translator translator;
private final Translator<Subtitle> translator;
private final Preferences preferences;
private final Language language;
private final VideoInfo videoInfo;
@@ -32,7 +34,7 @@ class TestASSSubtitleConverter {
private final int defaultFontSize;
private final ASSSubtitleConverter converter;
TestASSSubtitleConverter(@Mock final Translator translator,
TestASSSubtitleConverter(@Mock final Translator<Subtitle> translator,
@Mock final Preferences preferences,
@Mock final Language language,
@Mock final VideoInfo videoInfo) {
@@ -40,11 +42,15 @@ class TestASSSubtitleConverter {
this.preferences = Objects.requireNonNull(preferences);
this.language = Objects.requireNonNull(language);
this.videoInfo = Objects.requireNonNull(videoInfo);
when(videoInfo.width()).thenReturn(1920);
when(videoInfo.height()).thenReturn(1080);
this.defaultFontName = "Arial";
this.defaultFontSize = 12;
this.converter = new ASSSubtitleConverter(translator, preferences, defaultFontName, defaultFontSize);
}
@BeforeEach
void beforeEach() {
when(videoInfo.width()).thenReturn(1920);
when(videoInfo.height()).thenReturn(1080);
when(translator.getLanguage(anyString())).thenReturn(language);
}

View File

@@ -2,10 +2,12 @@ package com.github.gtache.autosubtitle.subtitle.converter.impl;
import com.github.gtache.autosubtitle.Language;
import com.github.gtache.autosubtitle.VideoInfo;
import com.github.gtache.autosubtitle.subtitle.Subtitle;
import com.github.gtache.autosubtitle.subtitle.converter.ParseException;
import com.github.gtache.autosubtitle.subtitle.impl.SubtitleCollectionImpl;
import com.github.gtache.autosubtitle.subtitle.impl.SubtitleImpl;
import com.github.gtache.autosubtitle.translation.Translator;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -22,16 +24,20 @@ import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class TestSRTSubtitleConverter {
private final Translator translator;
private final Translator<Subtitle> translator;
private final Language language;
private final VideoInfo videoInfo;
private final SRTSubtitleConverter converter;
TestSRTSubtitleConverter(@Mock final Translator translator, @Mock final Language language, @Mock final VideoInfo videoInfo) {
TestSRTSubtitleConverter(@Mock final Translator<Subtitle> translator, @Mock final Language language, @Mock final VideoInfo videoInfo) {
this.translator = Objects.requireNonNull(translator);
this.language = Objects.requireNonNull(language);
this.videoInfo = Objects.requireNonNull(videoInfo);
this.converter = new SRTSubtitleConverter(translator);
}
@BeforeEach
void beforeEach() {
when(translator.getLanguage(anyString())).thenReturn(language);
}

View File

@@ -1,5 +1,6 @@
package com.github.gtache.autosubtitle.subtitle.converter.impl;
import com.github.gtache.autosubtitle.subtitle.Subtitle;
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter;
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverterProvider;
import org.junit.jupiter.api.Test;
@@ -15,11 +16,11 @@ import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(MockitoExtension.class)
class TestSubtitleConverterProviderImpl {
private final SubtitleConverter first;
private final SubtitleConverter second;
private final SubtitleConverter<Subtitle> first;
private final SubtitleConverter<Subtitle> second;
private final SubtitleConverterProvider provider;
TestSubtitleConverterProviderImpl(@Mock final SubtitleConverter first, @Mock final SubtitleConverter second) {
TestSubtitleConverterProviderImpl(@Mock final SubtitleConverter<Subtitle> first, @Mock final SubtitleConverter<Subtitle> second) {
this.first = Objects.requireNonNull(first);
this.second = Objects.requireNonNull(second);
this.provider = new SubtitleConverterProviderImpl(Map.of("first", first, "second", second));

View File

@@ -6,7 +6,6 @@ import com.github.gtache.autosubtitle.Video;
import com.github.gtache.autosubtitle.subtitle.Subtitle;
import com.github.gtache.autosubtitle.subtitle.SubtitleCollection;
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractEvent;
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractException;
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractionModel;
import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractorListener;
import org.junit.jupiter.api.Test;
@@ -57,12 +56,12 @@ class TestAbstractSubtitleExtractor {
private static final class DummySubtitleExtractor extends AbstractSubtitleExtractor {
@Override
public SubtitleCollection extract(final Video video, final Language language, final ExtractionModel model) throws ExtractException {
public SubtitleCollection<Subtitle> extract(final Video video, final Language language, final ExtractionModel model) {
throw new UnsupportedOperationException();
}
@Override
public SubtitleCollection<Subtitle> extract(final Audio audio, final Language language, final ExtractionModel model) throws ExtractException {
public SubtitleCollection<Subtitle> extract(final Audio audio, final Language language, final ExtractionModel model) {
throw new UnsupportedOperationException();
}
}

View File

@@ -28,7 +28,7 @@ class TestSubtitleCollectionImpl {
@Test
void testGetters() {
final var text = "test";
final var collection = new SubtitleCollectionImpl(text, subtitles, langue);
final var collection = new SubtitleCollectionImpl<>(text, subtitles, langue);
assertEquals(text, collection.text());
assertEquals(subtitles, collection.subtitles());
assertEquals(langue, collection.language());
@@ -37,8 +37,8 @@ class TestSubtitleCollectionImpl {
@Test
void testIllegal() {
final var text = "";
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl(null, subtitles, langue));
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl(text, null, langue));
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl(text, subtitles, null));
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl<>(null, subtitles, langue));
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl<>(text, null, langue));
assertThrows(NullPointerException.class, () -> new SubtitleCollectionImpl<>(text, subtitles, null));
}
}