Task 2 test all combinations

This commit is contained in:
0nlineSam 2025-01-11 13:03:41 +01:00
parent b936a11ac4
commit ce6251dca3
6 changed files with 121 additions and 18 deletions

View File

@ -3,12 +3,30 @@ package org.jabref.model.search.matchers;
import org.jabref.model.search.SearchMatcher;
import org.jabref.model.search.rules.MockSearchMatcher;
import java.util.ArrayList;
import java.util.List;
public class AndMatcherTest extends SearchMatcherTest {
@Override
protected SearchMatcher makeMatcher() {
protected List<SearchMatcher> makeTrueMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildMatcher(true, true));
return matchers;
}
@Override
protected List<SearchMatcher> makeFalseMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildMatcher(true, false));
matchers.add(buildMatcher(false, true));
matchers.add(buildMatcher(false, false));
return matchers;
}
private SearchMatcher buildMatcher(boolean first, boolean second) {
MatcherSet matcherSet = MatcherSets.build(MatcherSets.MatcherType.AND);
matcherSet.addRule(new MockSearchMatcher(true));
matcherSet.addRule(new MockSearchMatcher(true));
matcherSet.addRule(new MockSearchMatcher(first));
matcherSet.addRule(new MockSearchMatcher(second));
return matcherSet;
}
}

View File

@ -3,12 +3,30 @@ package org.jabref.model.search.matchers;
import org.jabref.model.search.SearchMatcher;
import org.jabref.model.search.rules.MockSearchMatcher;
import java.util.ArrayList;
import java.util.List;
public class NotAndMatcherTest extends SearchMatcherTest {
@Override
protected SearchMatcher makeMatcher() {
protected List<SearchMatcher> makeTrueMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildNotMatcher(true, false));
matchers.add(buildNotMatcher(false, true));
matchers.add(buildNotMatcher(false, false));
return matchers;
}
@Override
protected List<SearchMatcher> makeFalseMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildNotMatcher(true, true));
return matchers;
}
private SearchMatcher buildNotMatcher(boolean first, boolean second) {
MatcherSet matcherSet = MatcherSets.build(MatcherSets.MatcherType.AND);
matcherSet.addRule(new MockSearchMatcher(true));
matcherSet.addRule(new MockSearchMatcher(false));
matcherSet.addRule(new MockSearchMatcher(first));
matcherSet.addRule(new MockSearchMatcher(second));
return new NotMatcher(matcherSet);
}
}

View File

@ -3,10 +3,24 @@ package org.jabref.model.search.matchers;
import org.jabref.model.search.SearchMatcher;
import org.jabref.model.search.rules.MockSearchMatcher;
import java.util.ArrayList;
import java.util.List;
public class NotMatcherTest extends SearchMatcherTest {
@Override
protected SearchMatcher makeMatcher() {
return new NotMatcher(new MockSearchMatcher(false));
protected List<SearchMatcher> makeTrueMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(new NotMatcher(new MockSearchMatcher(false)));
matchers.add(new NotMatcher(new NotMatcher(new MockSearchMatcher(true))));
return matchers;
}
@Override
protected List<SearchMatcher> makeFalseMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(new NotMatcher(new MockSearchMatcher(true)));
matchers.add(new NotMatcher(new NotMatcher(new MockSearchMatcher(false))));
return matchers;
}
}

View File

@ -3,12 +3,30 @@ package org.jabref.model.search.matchers;
import org.jabref.model.search.SearchMatcher;
import org.jabref.model.search.rules.MockSearchMatcher;
import java.util.ArrayList;
import java.util.List;
public class NotOrMatcherTest extends SearchMatcherTest {
@Override
protected SearchMatcher makeMatcher() {
protected List<SearchMatcher> makeTrueMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildNotMatcher(false, false));
return matchers;
}
@Override
protected List<SearchMatcher> makeFalseMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildNotMatcher(true, true));
matchers.add(buildNotMatcher(true, false));
matchers.add(buildNotMatcher(false, true));
return matchers;
}
private SearchMatcher buildNotMatcher(boolean first, boolean second) {
MatcherSet matcherSet = MatcherSets.build(MatcherSets.MatcherType.OR);
matcherSet.addRule(new MockSearchMatcher(false));
matcherSet.addRule(new MockSearchMatcher(false));
matcherSet.addRule(new MockSearchMatcher(first));
matcherSet.addRule(new MockSearchMatcher(second));
return new NotMatcher(matcherSet);
}
}

View File

@ -3,12 +3,30 @@ package org.jabref.model.search.matchers;
import org.jabref.model.search.SearchMatcher;
import org.jabref.model.search.rules.MockSearchMatcher;
import java.util.ArrayList;
import java.util.List;
public class OrMatcherTest extends SearchMatcherTest {
@Override
protected SearchMatcher makeMatcher() {
protected List<SearchMatcher> makeTrueMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildMatcher(true, true));
matchers.add(buildMatcher(true, false));
matchers.add(buildMatcher(false, true));
return matchers;
}
@Override
protected List<SearchMatcher> makeFalseMatchers() {
List<SearchMatcher> matchers = new ArrayList<>();
matchers.add(buildMatcher(false, false));
return matchers;
}
private SearchMatcher buildMatcher(boolean first, boolean second) {
MatcherSet matcherSet = MatcherSets.build(MatcherSets.MatcherType.OR);
matcherSet.addRule(new MockSearchMatcher(true));
matcherSet.addRule(new MockSearchMatcher(false));
matcherSet.addRule(new MockSearchMatcher(first));
matcherSet.addRule(new MockSearchMatcher(second));
return matcherSet;
}
}

View File

@ -4,20 +4,37 @@ import org.jabref.model.entry.BibEntry;
import org.jabref.model.search.SearchMatcher;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public abstract class SearchMatcherTest {
private SearchMatcher matcher;
protected abstract SearchMatcher makeMatcher();
private List<SearchMatcher> trueMatchers;
private List<SearchMatcher> falseMatchers;
protected abstract List<SearchMatcher> makeTrueMatchers();
protected abstract List<SearchMatcher> makeFalseMatchers();
@BeforeEach
public void setUp() {
matcher = makeMatcher();
trueMatchers = makeTrueMatchers();
falseMatchers = makeFalseMatchers();
}
@Test
public void testIsMatch() {
assertTrue(matcher.isMatch(new BibEntry()));
for (SearchMatcher matcher : trueMatchers) {
assertTrue(matcher.isMatch(new BibEntry()));
}
}
@Test
public void testIsNotMatch() {
for (SearchMatcher matcher : falseMatchers) {
assertFalse(matcher.isMatch(new BibEntry()));
}
}
}