/*
* Condition 1: (State IS *new* OR State is *unread* OR State IS *updated*)
* OR (Entire News contains "Foo") OR (Author is "Benjamin Pasero")
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field2 = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition cond2 = fFactory.createSearchCondition(field2, SearchSpecifier.CONTAINS, "Foo");
ISearchField field3 = fFactory.createSearchField(INews.AUTHOR, fNewsEntityName);
ISearchCondition cond3 = fFactory.createSearchCondition(field3, SearchSpecifier.IS, "Benjamin Pasero");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond2, cond3), false);
assertSame(result, news1, news2, news3);
}
/*
* Condition 2: +(State IS *new* OR State is *unread* OR State IS *updated*)
* AND (Entire News contains "Foo") AND (Author is "Benjamin Pasero")
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field2 = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition cond2 = fFactory.createSearchCondition(field2, SearchSpecifier.CONTAINS, "Foo");
ISearchField field3 = fFactory.createSearchField(INews.AUTHOR, fNewsEntityName);
ISearchCondition cond3 = fFactory.createSearchCondition(field3, SearchSpecifier.CONTAINS, "Benjamin Pasero");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond2, cond3), true);
assertSame(result, news3);
}
/*
* Condition 3: (Entire News contains "Foo") AND (Title contains "Bar") AND
* (Author is not "Benjamin Pasero")
*/
{
ISearchField field1 = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.CONTAINS, "fafa");
ISearchField field2 = fFactory.createSearchField(INews.TITLE, fNewsEntityName);
ISearchCondition cond2 = fFactory.createSearchCondition(field2, SearchSpecifier.CONTAINS, "Bar");
ISearchField field3 = fFactory.createSearchField(INews.AUTHOR, fNewsEntityName);
ISearchCondition cond3 = fFactory.createSearchCondition(field3, SearchSpecifier.IS_NOT, "Benjamin Pasero");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond2, cond3), true);
assertSame(result, news2);
}
/*
* Condition 4: +(State IS *new* OR State is *unread* OR State IS *updated*)
* AND (Category IS Windows) AND (Category IS Apple)
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field4 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond4 = fFactory.createSearchCondition(field4, SearchSpecifier.IS, "windows");
ISearchField field5 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond5 = fFactory.createSearchCondition(field5, SearchSpecifier.IS, "apple");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond4, cond5), true);
assertSame(result, news3);
}
/*
* Condition 5: +(State IS *new* OR State is *unread* OR State IS *updated*)
* AND (Category IS Windows) AND (Category IS Apple) AND (Category IS NOT
* Slashdot)
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field4 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond4 = fFactory.createSearchCondition(field4, SearchSpecifier.IS, "windows");
ISearchField field5 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond5 = fFactory.createSearchCondition(field5, SearchSpecifier.IS, "apple");
ISearchField field6 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond6 = fFactory.createSearchCondition(field6, SearchSpecifier.IS_NOT, "slashdot");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond4, cond5, cond6), true);
assertEquals(0, result.size());
}
/*
* Condition 6: +(State IS *new* OR State is *unread* OR State IS *updated*)
* AND (Category IS NOT Windows)
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field4 = fFactory.createSearchField(INews.CATEGORIES, fNewsEntityName);
ISearchCondition cond4 = fFactory.createSearchCondition(field4, SearchSpecifier.IS_NOT, "windows");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond4), true);
assertSame(result, news2);
}
/*
* Condition 7: +(State IS *new* OR State is *unread* OR State IS *updated*)
* AND (Age is Less than 5 Days)
*/
{
ISearchField field1 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, EnumSet.of(State.NEW, State.UNREAD, State.UPDATED));
ISearchField field4 = fFactory.createSearchField(INews.AGE_IN_DAYS, fNewsEntityName);
ISearchCondition cond4 = fFactory.createSearchCondition(field4, SearchSpecifier.IS_LESS_THAN, 5);
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond4), true);
assertSame(result, news3);
}