Skip to content

Commit

Permalink
Refact to Parametrized Test
Browse files Browse the repository at this point in the history
Used Parametrized test with method source
Removed duplicate test
  • Loading branch information
michalfarago committed Oct 15, 2023
1 parent 10bb07a commit 6070647
Showing 1 changed file with 64 additions and 248 deletions.
312 changes: 64 additions & 248 deletions src/test/java/org/jabref/logic/integrity/TitleCheckerTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package org.jabref.logic.integrity;

import java.util.Optional;
import java.util.stream.Stream;

import org.jabref.model.database.BibDatabaseContext;
import org.jabref.model.database.BibDatabaseMode;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
Expand All @@ -24,194 +27,47 @@ public void setUp() {
checker = new TitleChecker(databaseContext);
}

@Test
public void firstLetterAsOnlyCapitalLetterInSubTitle2() {
String title = "This is a sub title 1: This is a sub title 2";
@ParameterizedTest(name = "{index}. Title: \"{1}\" {0}")
@MethodSource("validTitle")
void titleShouldNotRaiseWarning(String message, String title) {
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void noCapitalLetterInSubTitle2() {
String title = "This is a sub title 1: this is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void twoCapitalLettersInSubTitle2() {
String title = "This is a sub title 1: This is A sub title 2";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void middleLetterAsOnlyCapitalLetterInSubTitle2() {
String title = "This is a sub title 1: this is A sub title 2";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void twoCapitalLettersInSubTitle2WithCurlyBrackets() {
String title = "This is a sub title 1: This is {A} sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void middleLetterAsOnlyCapitalLetterInSubTitle2WithCurlyBrackets() {
String title = "This is a sub title 1: this is {A} sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void firstLetterAsOnlyCapitalLetterInSubTitle2AfterContinuousDelimiters() {
String title = "This is a sub title 1...This is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void middleLetterAsOnlyCapitalLetterInSubTitle2AfterContinuousDelimiters() {
String title = "This is a sub title 1... this is a sub Title 2";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void firstLetterAsOnlyCapitalLetterInEverySubTitleWithContinuousDelimiters() {
String title = "This is; A sub title 1.... This is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void firstLetterAsOnlyCapitalLetterInEverySubTitleWithRandomDelimiters() {
String title = "This!is!!A!Title??";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
public void moreThanOneCapitalLetterInSubTitleWithoutCurlyBrackets() {
String title = "This!is!!A!TitlE??";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsTitleWithOnlyFirstCapitalLetter() {
String title = "This is a title";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexDoesNotAcceptCapitalLettersInsideTitle() {
String title = "This is a Title";
@ParameterizedTest(name = "{index}. Title: \"{1}\" {0}")
@MethodSource("invalidTitle")
void titleShouldRaiseWarning(String message, String title) {
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexRemovesCapitalLetterInsideTitle() {
String title = "This is a {T}itle";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexRemovesEverythingInBracketsAndAcceptsNoTitleInput() {
String title = "{This is a Title}";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexRemovesEverythingInBrackets() {
String title = "This is a {Title}";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsTitleWithLowercaseFirstLetter() {
String title = "{C}urrent {C}hronicle";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsSubTitlesWithOnlyFirstCapitalLetter() {
String title = "This is a sub title 1: This is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsSubTitleWithLowercaseFirstLetter() {
String title = "This is a sub title 1: this is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexDoesNotAcceptCapitalLettersInsideSubTitle() {
String title = "This is a sub title 1: This is A sub title 2";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexRemovesCapitalLetterInsideSubTitle() {
String title = "This is a sub title 1: this is {A} sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexSplitsSubTitlesBasedOnDots() {
String title = "This is a sub title 1...This is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
}

@Test
void bibTexSplitsSubTitleBasedOnSpecialCharacters() {
String title = "This is; A sub title 1.... This is a sub title 2";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsCapitalLetterAfterSpecialCharacter() {
String title = "This!is!!A!Title??";
assertEquals(Optional.empty(), checker.checkValue(title));
assertEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsCapitalLetterOnlyAfterSpecialCharacter() {
String title = "This!is!!A!TitlE??";
assertNotEquals(Optional.empty(), checker.checkValue(title));
assertNotEquals(Optional.empty(), checker.checkValue(translatedTitle(title)));
}

@Test
void bibTexAcceptsOriginalAndTranslatedTitle() {
String title = "This is a title [This is translated title]";
assertEquals(Optional.empty(), checker.checkValue(title));
}

@Test
void bibTexNotAcceptsLeadingTranslatedTitleWithOriginal() {
String title = "[This is translated title] This is a title";
assertNotEquals(Optional.empty(), checker.checkValue(title));
}

private String translatedTitle(String title) {
return "[%s]".formatted(title);
static Stream<Arguments> validTitle() {
return Stream.of(
Arguments.of("firstLetterAsOnlyCapitalLetterInSubTitle2 ", "This is a sub title 1: This is a sub title 2"),
Arguments.of("noCapitalLetterInSubTitle2 ", "This is a sub title 1: this is a sub title 2"),
Arguments.of("twoCapitalLettersInSubTitle2WithCurlyBrackets ", "This is a sub title 1: This is {A} sub title 2"),
Arguments.of("middleLetterAsOnlyCapitalLetterInSubTitle2WithCurlyBrackets ", "This is a sub title 1: this is {A} sub title 2"),
Arguments.of("firstLetterAsOnlyCapitalLetterInSubTitle2AfterContinuousDelimiters ", "This is a sub title 1...This is a sub title 2"),
Arguments.of("firstLetterAsOnlyCapitalLetterInEverySubTitleWithContinuousDelimiters ", "This is; A sub title 1.... This is a sub title 2"),
Arguments.of("firstLetterAsOnlyCapitalLetterInEverySubTitleWithRandomDelimiters ", "This!is!!A!Title??"),
Arguments.of("bibTexAcceptsTitleWithOnlyFirstCapitalLetter ", "This is a title"),
Arguments.of("bibTexRemovesCapitalLetterInsideTitle ", "This is a {T}itle"),
Arguments.of("bibTexRemovesEverythingInBracketsAndAcceptsNoTitleInput ", "{This is a Title}"),
Arguments.of("bibTexRemovesEverythingInBrackets ", "This is a {Title}"),
Arguments.of("bibTexAcceptsTitleWithLowercaseFirstLetter ", "{C}urrent {C}hronicle"),
Arguments.of("bibTexAcceptsOriginalAndTranslatedTitle ", "This is a title [This is translated title]")
);
}

static Stream<Arguments> invalidTitle() {
return Stream.of(
Arguments.of("twoCapitalLettersInSubTitle2 ", "This is a sub title 1: This is A sub title 2"),
Arguments.of("middleLetterAsOnlyCapitalLetterInSubTitle2 ", "This is a sub title 1: this is A sub title 2"),
Arguments.of("middleLetterAsOnlyCapitalLetterInSubTitle2AfterContinuousDelimiters ", "This is a sub title 1... this is a sub Title 2"),
Arguments.of("moreThanOneCapitalLetterInSubTitleWithoutCurlyBrackets ", "This!is!!A!TitlE??"),
Arguments.of("bibTexDoesNotAcceptCapitalLettersInsideTitle ", "This is a Title"),
Arguments.of("bibTexDoesNotAcceptsLeadingTranslatedTitleWithOriginal ", "[This is translated title] This is a title")
);
}
}

Expand All @@ -226,74 +82,34 @@ public void setUp() {
checkerBiblatex = new TitleChecker(databaseBiblatex);
}

@Test
void bibLaTexAcceptsTitleWithOnlyFirstCapitalLetter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a title"));
}

@Test
void bibLaTexAcceptsCapitalLettersInsideTitle() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a Title"));
}

@Test
void bibLaTexRemovesCapitalLetterInsideTitle() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a {T}itle"));
}

@Test
void bibLaTexRemovesEverythingInBracketsAndAcceptsNoTitleInput() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("{This is a Title}"));
}

@Test
void bibLaTexRemovesEverythingInBrackets() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a {Title}"));
}

@Test
void bibLaTexAcceptsTitleWithLowercaseFirstLetter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("{C}urrent {C}hronicle"));
}

@Test
void bibLaTexAcceptsSubTitlesWithOnlyFirstCapitalLetter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a sub title 1: This is a sub title 2"));
}

@Test
void bibLaTexAcceptsSubTitleWithLowercaseFirstLetter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a sub title 1: this is a sub title 2"));
}

@Test
void bibLaTexAcceptsCapitalLettersInsideSubTitle() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a sub title 1: This is A sub title 2"));
}

@Test
void bibLaTexRemovesCapitalLetterInsideSubTitle() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a sub title 1: this is {A} sub title 2"));
}

@Test
void bibLaTexSplitsSubTitlesBasedOnDots() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is a sub title 1...This is a sub title 2"));
}

@Test
void bibLaTexSplitsSubTitleBasedOnSpecialCharacters() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This is; A sub title 1.... This is a sub title 2"));
}

@Test
void bibLaTexAcceptsCapitalLetterAfterSpecialCharacter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This!is!!A!Title??"));
@ParameterizedTest(name = "{index}. Title: \"{1}\" {0}")
@MethodSource("validTitle")
void titleShouldNotRaiseWarning(String message, String title) {
assertEquals(Optional.empty(), checkerBiblatex.checkValue(title));
assertEquals(Optional.empty(), checkerBiblatex.checkValue(translatedTitle(title)));
}

static Stream<Arguments> validTitle() {
return Stream.of(
Arguments.of("bibLaTexAcceptsTitleWithOnlyFirstCapitalLetter", "This is a title"),
Arguments.of("bibLaTexAcceptsCapitalLettersInsideTitle", "This is a Title"),
Arguments.of("bibLaTexRemovesCapitalLetterInsideTitle", "This is a {T}itle"),
Arguments.of("bibLaTexRemovesEverythingInBracketsAndAcceptsNoTitleInput", "{This is a Title}"),
Arguments.of("bibLaTexRemovesEverythingInBrackets", "This is a {Title}"),
Arguments.of("bibLaTexAcceptsTitleWithLowercaseFirstLetter", "{C}urrent {C}hronicle"),
Arguments.of("bibLaTexAcceptsSubTitlesWithOnlyFirstCapitalLetter", "This is a sub title 1: This is a sub title 2"),
Arguments.of("bibLaTexAcceptsSubTitleWithLowercaseFirstLetter", "This is a sub title 1: this is a sub title 2"),
Arguments.of("bibLaTexAcceptsCapitalLettersInsideSubTitle", "This is a sub title 1: This is A sub title 2"),
Arguments.of("bibLaTexRemovesCapitalLetterInsideSubTitle", "This is a sub title 1: this is {A} sub title 2"),
Arguments.of("bibLaTexSplitsSubTitlesBasedOnDots", "This is a sub title 1...This is a sub title 2"),
Arguments.of("bibLaTexSplitsSubTitleBasedOnSpecialCharacters", "This is; A sub title 1.... This is a sub title 2"),
Arguments.of("bibLaTexAcceptsCapitalLetterAfterSpecialCharacter", "This!is!!A!Title??"),
Arguments.of("bibLaTexAcceptsCapitalLetterNotOnlyAfterSpecialCharacter", "This!is!!A!TitlE??")
);
}
}

@Test
void bibLaTexAcceptsCapitalLetterNotOnlyAfterSpecialCharacter() {
assertEquals(Optional.empty(), checkerBiblatex.checkValue("This!is!!A!TitlE??"));
}
private String translatedTitle(String title) {
return "[%s]".formatted(title);
}
}

0 comments on commit 6070647

Please sign in to comment.