From b3713256c035784987d1307f2f6ba50c693d130a Mon Sep 17 00:00:00 2001 From: ningxie Date: Mon, 3 May 2021 21:24:51 +0200 Subject: [PATCH 1/3] Refactor NoBibTexFieldCheckerTest for line coverage and mutation coverage 1. Switched to using parametrized test 2. Covers missing conditions --- .../integrity/NoBibTexFieldCheckerTest.java | 121 ++++++------------ 1 file changed, 42 insertions(+), 79 deletions(-) diff --git a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java index a177f7e1ef6..780e0f3f4fb 100644 --- a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java +++ b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java @@ -2,12 +2,17 @@ import java.util.Collections; import java.util.List; +import java.util.stream.Stream; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.field.UnknownField; -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.CsvSource; +import org.junit.jupiter.params.provider.MethodSource; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,86 +20,44 @@ class NoBibTexFieldCheckerTest { private final NoBibtexFieldChecker checker = new NoBibtexFieldChecker(); - @Test - void abstractIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.ABSTRACT, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void addressIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.ADDRESS, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void afterwordIsRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.AFTERWORD, "test"); - IntegrityMessage message = new IntegrityMessage("biblatex field only", entry, StandardField.AFTERWORD); + private static Stream nonBiblatexOnlyFields() { + return Stream.of( + // arbitrary field + Arguments.of(new UnknownField("fieldNameNotDefinedInThebiblatexManual"), Collections.emptyList()), + + // these fields are displayed by JabRef as default + Arguments.of(StandardField.ABSTRACT, Collections.emptyList()), + Arguments.of(StandardField.COMMENT, Collections.emptyList()), + Arguments.of(StandardField.DOI, Collections.emptyList()), + Arguments.of(StandardField.URL, Collections.emptyList()), + + // these fields are not recognized as biblatex only fields + Arguments.of(StandardField.ADDRESS, Collections.emptyList()), + Arguments.of(StandardField.INSTITUTION, Collections.emptyList()), + Arguments.of(StandardField.JOURNAL, Collections.emptyList()), + Arguments.of(StandardField.KEYWORDS, Collections.emptyList()), + Arguments.of(StandardField.REVIEW, Collections.emptyList()) + ); + } + + @ParameterizedTest() + @MethodSource("nonBiblatexOnlyFields") + void nonBiblatexOnlyField(Field field, List expectedResult) { + BibEntry entry = new BibEntry().withField(field, "test"); + assertEquals(expectedResult, checker.check(entry)); + } + + @ParameterizedTest(name = "field={0}") + @CsvSource({ + "AFTERWORD", + "JOURNALTITLE", + "LOCATION" + }) + void biblatexOnlyField(StandardField field) { + BibEntry entry = new BibEntry().withField(field, "test"); + IntegrityMessage message = new IntegrityMessage("biblatex field only", entry, field); List messages = checker.check(entry); assertEquals(Collections.singletonList(message), messages); } - @Test - void arbitraryNonBiblatexFieldIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(new UnknownField("fieldNameNotDefinedInThebiblatexManual"), "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void commentIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.COMMENT, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void instituationIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.INSTITUTION, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void journalIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.JOURNAL, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void journaltitleIsRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.JOURNALTITLE, "test"); - IntegrityMessage message = new IntegrityMessage("biblatex field only", entry, StandardField.JOURNALTITLE); - List messages = checker.check(entry); - assertEquals(Collections.singletonList(message), messages); - } - - @Test - void keywordsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.KEYWORDS, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } - - @Test - void locationIsRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.LOCATION, "test"); - IntegrityMessage message = new IntegrityMessage("biblatex field only", entry, StandardField.LOCATION); - List messages = checker.check(entry); - assertEquals(Collections.singletonList(message), messages); - } - - @Test - void reviewIsNotRecognizedAsBiblatexOnlyField() { - BibEntry entry = new BibEntry(); - entry.setField(StandardField.REVIEW, "test"); - assertEquals(Collections.emptyList(), checker.check(entry)); - } } From 7def5684df28fe08d63bc8ef4dd6984ebdf0fde4 Mon Sep 17 00:00:00 2001 From: ningxie Date: Mon, 3 May 2021 22:15:08 +0200 Subject: [PATCH 2/3] Update NoBibTexFieldCheckerTest.java --- .../integrity/NoBibTexFieldCheckerTest.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java index 780e0f3f4fb..0caf1eac3f2 100644 --- a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java +++ b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java @@ -20,31 +20,29 @@ class NoBibTexFieldCheckerTest { private final NoBibtexFieldChecker checker = new NoBibtexFieldChecker(); - private static Stream nonBiblatexOnlyFields() { + private static Stream nonBiblatexOnlyFields() { return Stream.of( // arbitrary field - Arguments.of(new UnknownField("fieldNameNotDefinedInThebiblatexManual"), Collections.emptyList()), - - // these fields are displayed by JabRef as default - Arguments.of(StandardField.ABSTRACT, Collections.emptyList()), - Arguments.of(StandardField.COMMENT, Collections.emptyList()), - Arguments.of(StandardField.DOI, Collections.emptyList()), - Arguments.of(StandardField.URL, Collections.emptyList()), + new UnknownField("fieldNameNotDefinedInThebiblatexManual"), + StandardField.ABSTRACT, + StandardField.COMMENT, + StandardField.DOI, + StandardField.URL, // these fields are not recognized as biblatex only fields - Arguments.of(StandardField.ADDRESS, Collections.emptyList()), - Arguments.of(StandardField.INSTITUTION, Collections.emptyList()), - Arguments.of(StandardField.JOURNAL, Collections.emptyList()), - Arguments.of(StandardField.KEYWORDS, Collections.emptyList()), - Arguments.of(StandardField.REVIEW, Collections.emptyList()) + StandardField.ADDRESS, + StandardField.INSTITUTION, + StandardField.JOURNAL, + StandardField.KEYWORDS, + StandardField.REVIEW ); } @ParameterizedTest() @MethodSource("nonBiblatexOnlyFields") - void nonBiblatexOnlyField(Field field, List expectedResult) { + void nonBiblatexOnlyField(Field field) { BibEntry entry = new BibEntry().withField(field, "test"); - assertEquals(expectedResult, checker.check(entry)); + assertEquals(Collections.emptyList(), checker.check(entry)); } @ParameterizedTest(name = "field={0}") From 49a9ad872dfd6c477d57a32300bd924ab053d227 Mon Sep 17 00:00:00 2001 From: ningxie Date: Mon, 3 May 2021 22:24:48 +0200 Subject: [PATCH 3/3] Remove unused import --- .../org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java index 0caf1eac3f2..857c9514cdd 100644 --- a/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java +++ b/src/test/java/org/jabref/logic/integrity/NoBibTexFieldCheckerTest.java @@ -10,7 +10,6 @@ import org.jabref.model.entry.field.UnknownField; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.MethodSource;