mirror of
https://github.com/RatzzFatzz/MKVAudioSubtitleChanger.git
synced 2026-02-11 02:05:56 +01:00
Fix PatternValidator & Add PatternValidatorTest
This commit is contained in:
@@ -6,6 +6,8 @@ import java.util.regex.Pattern;
|
|||||||
import java.util.regex.PatternSyntaxException;
|
import java.util.regex.PatternSyntaxException;
|
||||||
|
|
||||||
public class PatternValidator extends ConfigValidator<Pattern> {
|
public class PatternValidator extends ConfigValidator<Pattern> {
|
||||||
|
private static final Pattern EMPTY_PATTERN = Pattern.compile("");
|
||||||
|
|
||||||
public PatternValidator(ConfigProperty property, boolean required, Pattern defaultValue) {
|
public PatternValidator(ConfigProperty property, boolean required, Pattern defaultValue) {
|
||||||
super(property, required, defaultValue);
|
super(property, required, defaultValue);
|
||||||
}
|
}
|
||||||
@@ -15,12 +17,12 @@ public class PatternValidator extends ConfigValidator<Pattern> {
|
|||||||
try {
|
try {
|
||||||
return Pattern.compile(value);
|
return Pattern.compile(value);
|
||||||
} catch (PatternSyntaxException e) {
|
} catch (PatternSyntaxException e) {
|
||||||
return null;
|
return EMPTY_PATTERN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean isValid(Pattern result) {
|
boolean isValid(Pattern result) {
|
||||||
return result != null;
|
return !result.equals(EMPTY_PATTERN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ public enum ConfigProperty {
|
|||||||
SAFE_MODE("safe-mode", "s", "Test run (no files will be changes)"),
|
SAFE_MODE("safe-mode", "s", "Test run (no files will be changes)"),
|
||||||
WINDOWS("windows", null, "Is operating system windows"),
|
WINDOWS("windows", null, "Is operating system windows"),
|
||||||
THREADS("threads", "t", "thread count (default: 2)"),
|
THREADS("threads", "t", "thread count (default: 2)"),
|
||||||
INCLUDE_PATTERN("include-pattern", "i", "Include files matching pattern"),
|
INCLUDE_PATTERN("include-pattern", "p", "Include files matching pattern"),
|
||||||
MKV_TOOL_NIX("mkvtoolnix", "m", "Path to mkv tool nix installation"),
|
MKV_TOOL_NIX("mkvtoolnix", "m", "Path to mkv tool nix installation"),
|
||||||
FORCED_KEYWORDS("forcedKeywords", "fk", "Additional keywords to identify forced tracks"),
|
FORCED_KEYWORDS("forcedKeywords", "fk", "Additional keywords to identify forced tracks"),
|
||||||
COMMENTARY_KEYWORDS("commentary-keywords", "ck", "Additional keywords to identify commentary tracks"),
|
COMMENTARY_KEYWORDS("commentary-keywords", "ck", "Additional keywords to identify commentary tracks"),
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class BooleanValidatorTest {
|
|||||||
static void before() {
|
static void before() {
|
||||||
parser = new DefaultParser();
|
parser = new DefaultParser();
|
||||||
options = new Options();
|
options = new Options();
|
||||||
options.addOption(optionOf(SAFE_MODE, "s", false));
|
options.addOption(optionOf(SAFE_MODE, SAFE_MODE.abrv(), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Stream<Arguments> provideTestCases() {
|
private static Stream<Arguments> provideTestCases() {
|
||||||
|
|||||||
@@ -14,16 +14,13 @@ import org.junit.jupiter.params.provider.Arguments;
|
|||||||
import org.junit.jupiter.params.provider.MethodSource;
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.*;
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.*;
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.MISSING;
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.MISSING;
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.*;
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.*;
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.WINDOWS;
|
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.CommandLineOptionsUtil.optionOf;
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.CommandLineOptionsUtil.optionOf;
|
||||||
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.yamlList;
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
class MkvToolNixPathValidatorTest {
|
class MkvToolNixPathValidatorTest {
|
||||||
@@ -34,7 +31,7 @@ class MkvToolNixPathValidatorTest {
|
|||||||
static void before() {
|
static void before() {
|
||||||
parser = new DefaultParser();
|
parser = new DefaultParser();
|
||||||
options = new Options();
|
options = new Options();
|
||||||
options.addOption(optionOf(MKV_TOOL_NIX, "m", true));
|
options.addOption(optionOf(MKV_TOOL_NIX, MKV_TOOL_NIX.abrv(), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Stream<Arguments> provideTestCases() {
|
private static Stream<Arguments> provideTestCases() {
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator;
|
||||||
|
|
||||||
|
import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult;
|
||||||
|
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty;
|
||||||
|
import at.pcgamingfreaks.yaml.YAML;
|
||||||
|
import at.pcgamingfreaks.yaml.YamlInvalidContentException;
|
||||||
|
import org.apache.commons.cli.CommandLineParser;
|
||||||
|
import org.apache.commons.cli.DefaultParser;
|
||||||
|
import org.apache.commons.cli.Options;
|
||||||
|
import org.apache.commons.cli.ParseException;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.*;
|
||||||
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.INVALID;
|
||||||
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.INCLUDE_PATTERN;
|
||||||
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.CommandLineOptionsUtil.optionOf;
|
||||||
|
import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.TestUtil.argumentsOf;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class PatternValidatorTest {
|
||||||
|
private static CommandLineParser parser;
|
||||||
|
private static Options options;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void before() {
|
||||||
|
parser = new DefaultParser();
|
||||||
|
options = new Options();
|
||||||
|
options.addOption(optionOf(INCLUDE_PATTERN, INCLUDE_PATTERN.abrv(), true));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Stream<Arguments> provideTestCases() {
|
||||||
|
return Stream.of(
|
||||||
|
argumentsOf(INCLUDE_PATTERN, false, null, "include-pattern: \"[abd]?.*\"", new String[]{}, VALID),
|
||||||
|
argumentsOf(INCLUDE_PATTERN, true, null, "", new String[]{"-p", "[abd]?.*"}, VALID),
|
||||||
|
|
||||||
|
argumentsOf(INCLUDE_PATTERN, false, Pattern.compile(".*"), "", new String[]{}, DEFAULT),
|
||||||
|
argumentsOf(INCLUDE_PATTERN, true, Pattern.compile(".*"), "", new String[]{}, DEFAULT),
|
||||||
|
|
||||||
|
argumentsOf(INCLUDE_PATTERN, true, null, "", new String[]{}, MISSING),
|
||||||
|
argumentsOf(INCLUDE_PATTERN, false, null, "", new String[]{}, NOT_PRESENT),
|
||||||
|
|
||||||
|
argumentsOf(INCLUDE_PATTERN, true, null, "", new String[]{"-p", "?."}, INVALID),
|
||||||
|
argumentsOf(INCLUDE_PATTERN, false, null, "include-pattern: \"[arst*\"", new String[]{}, INVALID),
|
||||||
|
argumentsOf(INCLUDE_PATTERN, true, Pattern.compile(".?"), "", new String[]{"-p", "?."}, INVALID)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@MethodSource("provideTestCases")
|
||||||
|
void validate(ConfigProperty property, boolean required, Pattern defaultValue, String yamlArgs, String[] cmdArgs,
|
||||||
|
ValidationResult expectedResult) throws ParseException, YamlInvalidContentException {
|
||||||
|
PatternValidator underTest = new PatternValidator(property, required, defaultValue);
|
||||||
|
|
||||||
|
ValidationResult result = underTest.validate(new YAML(yamlArgs), parser.parse(options, cmdArgs));
|
||||||
|
|
||||||
|
assertEquals(expectedResult, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user