/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2009 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** All rights reserved **
** **
** This program and the accompanying materials are made available under **
** the terms of the Eclipse Public License v1.0 which accompanies this **
** distribution, and is available at: **
** http://www.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.tests.model;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.rssowl.core.persist.IAttachment;
import org.rssowl.core.persist.IBookMark;
import org.rssowl.core.persist.ICategory;
import org.rssowl.core.persist.IEntity;
import org.rssowl.core.persist.IFeed;
import org.rssowl.core.persist.IFolder;
import org.rssowl.core.persist.IFolderChild;
import org.rssowl.core.persist.INews;
import org.rssowl.core.persist.INews.State;
import org.rssowl.core.persist.INewsBin;
import org.rssowl.core.persist.IPerson;
import org.rssowl.core.persist.ISearchCondition;
import org.rssowl.core.persist.ISearchField;
import org.rssowl.core.persist.SearchSpecifier;
import org.rssowl.core.persist.dao.DynamicDAO;
import org.rssowl.core.persist.reference.FeedLinkReference;
import org.rssowl.core.persist.reference.NewsReference;
import org.rssowl.core.persist.service.PersistenceException;
import org.rssowl.core.tests.TestUtils;
import org.rssowl.core.util.SearchHit;
import org.rssowl.ui.internal.util.ModelUtils;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
/**
* Test searching types from the persistence layer.
*
* @author bpasero
*/
public class ModelSearchTest3 extends AbstractModelSearchTest {
/**
* @throws Exception
*/
@Test
public void testSearchNewsWithBINLocation() throws Exception {
/* First add some Types */
IFolder rootFolder = fFactory.createFolder(null, null, "Root");
DynamicDAO.save(rootFolder);
IFolder subFolder = fFactory.createFolder(null, rootFolder, "Sub Folder");
DynamicDAO.save(subFolder);
IFeed feed1 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed1.com"));
IFeed feed2 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed2.com"));
IFeed feed3 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed3.com"));
INews news1 = createNews(feed1, "First News of Feed One", "http://www.news.com/news1.html", State.UNREAD);
INews news2 = createNews(feed1, "Second News of Feed One", "http://www.news.com/news2.html", State.NEW);
INews news3 = createNews(feed2, "First News of Feed Two", "http://www.news.com/news3.html", State.READ);
INews news4 = createNews(feed2, "Second News of Feed Two", "http://www.news.com/news4.html", State.NEW);
INews news5 = createNews(feed3, "First News of Feed Three", "http://www.news.com/news5.html", State.UPDATED);
INews news6 = createNews(feed3, "Second News of Feed Three", "http://www.news.com/news6.html", State.NEW);
DynamicDAO.save(feed1);
DynamicDAO.save(feed2);
DynamicDAO.save(feed3);
INewsBin rootBin = fFactory.createNewsBin(null, rootFolder, "Root Bin");
INewsBin subRootBin = fFactory.createNewsBin(null, subFolder, "Sub Root Bin");
DynamicDAO.save(rootFolder);
List<INews> copiedNews = new ArrayList<INews>();
INews news1Copy = fFactory.createNews(news1, rootBin);
copiedNews.add(news1Copy);
INews news2Copy = fFactory.createNews(news2, rootBin);
copiedNews.add(news2Copy);
INews news3CopyRoot = fFactory.createNews(news3, rootBin);
copiedNews.add(news3CopyRoot);
INews news3CopySubRoot = fFactory.createNews(news3, subRootBin);
copiedNews.add(news3CopySubRoot);
INews news4Copy = fFactory.createNews(news4, subRootBin);
copiedNews.add(news4Copy);
INews news5Copy = fFactory.createNews(news5, subRootBin);
copiedNews.add(news5Copy);
INews news6Copy = fFactory.createNews(news6, subRootBin);
copiedNews.add(news6Copy);
DynamicDAO.saveAll(copiedNews);
DynamicDAO.save(rootBin);
DynamicDAO.save(subRootBin);
/* Wait for Indexer */
waitForIndexer();
/* Location IS Root Folder */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { rootFolder })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1), true);
assertSame(result, news1Copy, news2Copy, news3CopyRoot, news3CopySubRoot, news4Copy, news5Copy, news6Copy);
}
/* Location IS Sub Folder */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { subFolder })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1), true);
assertSame(result, news3CopySubRoot, news4Copy, news5Copy, news6Copy);
}
/* Location IS Root Bin */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { rootBin })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1), true);
assertSame(result, news1Copy, news2Copy, news3CopyRoot);
}
/* Location IS Root Bin or Sub Root Bin */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { rootBin })));
ISearchField field2 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond2 = fFactory.createSearchCondition(field2, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { subRootBin })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond2), false);
assertSame(result, news1Copy, news2Copy, news3CopyRoot, news3CopySubRoot, news4Copy, news5Copy, news6Copy);
}
/* Location IS (Root Bin, Sub Root Bin) */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { rootBin, subRootBin })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1), false);
assertSame(result, news1Copy, news2Copy, news3CopyRoot, news3CopySubRoot, news4Copy, news5Copy, news6Copy);
}
/* Location IS Sub Folder AND State is new */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { subFolder })));
ISearchField field2 = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition cond2 = fFactory.createSearchCondition(field2, SearchSpecifier.IS, EnumSet.of(INews.State.NEW));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1, cond2), true);
assertSame(result, news4Copy, news6Copy);
}
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testSearchEntireNewsWith_CONTAINS_Specifier() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
INews news1 = createNews(feed, "This is Radio no (DVD)", "http://www.news.com/news1.html", State.READ);
INews news2 = createNews(feed, " Bar", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer Radio no (DVD) description with <html><h2>included!</h2></html>");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "(DVD)");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "(DVD)");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "no");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "(DVD)");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "no");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "RadIO");
result = fModelSearch.searchNews(list(condition1, condition2, condition3), true);
assertSame(result, news1, news2);
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testSearchEntireNewsWithWildcards() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
/* Title */
INews news1 = createNews(feed, "Benjamin Pasero", "http://www.news.com/news1.html", State.NEW);
/* Description */
INews news2 = createNews(feed, "Michael Jordan", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer name like Benjamin Pasero.");
/* Author */
INews news3 = createNews(feed, "Jordan Kinsey", "http://www.news.com/news3.html", State.NEW);
IPerson author = fFactory.createPerson(null, news3);
author.setName("Benjamin Pasero");
/* Category */
INews news4 = createNews(feed, "McDonalds", "http://www.news.com/news4.html", State.NEW);
ICategory category = fFactory.createCategory(null, news4);
category.setName("Benjamin Pasero");
/* Attachment Content */
INews news5 = createNews(feed, "McFlurry", "http://www.news.com/news5.html", State.NEW);
IAttachment attachment = fFactory.createAttachment(null, news5);
attachment.setLink(new URI("http://www.attachment.com/att1news2.file"));
attachment.setType("Benjamin Pasero");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Benjamin Pasero");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Benjamin P*");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Benjamin Pa?e*o");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Ben* Paser?");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "?enjamin ?asero");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "B* P*");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*e?j?mi? *a?e?*");
result = fModelSearch.searchNews(list(condition1), false);
assertSame(result, news1, news2, news3, news4, news5);
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testSearchEntireNewsWith_CONTAINS_ALL_Specifier() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
INews news1 = createNews(feed, "This is Radio no (DVD)", "http://www.news.com/news1.html", State.READ);
INews news2 = createNews(feed, " Bar", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer Radio no (DVD) description with <html><h2>included!</h2></html>");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "(DVD)");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "(DVD) description included");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "(DVD)");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "no");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "(DVD) no");
result = fModelSearch.searchNews(list(condition1), true);
assertSame(result, news1, news2);
field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "(DVD)");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "no");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "RadIO");
result = fModelSearch.searchNews(list(condition1, condition2, condition3), true);
assertSame(result, news1, news2);
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
/**
* @throws Exception
*/
@Test
@SuppressWarnings("nls")
public void testEmptyFolderLocationCondition() throws Exception {
/* First add some Types */
IFolder rootFolder = fFactory.createFolder(null, null, "Root");
DynamicDAO.save(rootFolder);
IFolder subFolder = fFactory.createFolder(null, rootFolder, "Sub Folder");
DynamicDAO.save(subFolder);
IFolder emptyFolder = fFactory.createFolder(null, rootFolder, "Empty Folder");
DynamicDAO.save(emptyFolder);
IFeed feed1 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed1.com"));
IFeed feed2 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed2.com"));
IFeed feed3 = fFactory.createFeed(null, new URI("http://www.testSearchNewsWithLocationFeed3.com"));
createNews(feed1, "First News of Feed One", "http://www.news.com/news1.html", State.UNREAD);
createNews(feed1, "Second News of Feed One", "http://www.news.com/news2.html", State.NEW);
DynamicDAO.save(feed1);
DynamicDAO.save(feed2);
DynamicDAO.save(feed3);
IBookMark rootMark1 = fFactory.createBookMark(null, rootFolder, new FeedLinkReference(feed1.getLink()), "rootMark1");
DynamicDAO.save(rootMark1);
IBookMark subRootMark1 = fFactory.createBookMark(null, subFolder, new FeedLinkReference(feed2.getLink()), "subRootMark1");
DynamicDAO.save(subRootMark1);
IBookMark subRootMark2 = fFactory.createBookMark(null, subFolder, new FeedLinkReference(feed3.getLink()), "subRootMark2");
DynamicDAO.save(subRootMark2);
/* Wait for Indexer */
waitForIndexer();
/* Location IS Empty Folder */
{
ISearchField field1 = fFactory.createSearchField(INews.LOCATION, fNewsEntityName);
ISearchCondition cond1 = fFactory.createSearchCondition(field1, SearchSpecifier.IS, ModelUtils.toPrimitive(Arrays.asList(new IFolderChild[] { emptyFolder })));
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(cond1), true);
assertEquals(0, result.size());
}
}
/**
* @throws Exception
*/
@Test
public void testSearchEntireNewsAllCases() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
/* Title */
INews news1 = createNews(feed, "Johnny Depp", "http://www.news.com/news1.html", State.NEW);
/* Description */
INews news2 = createNews(feed, "News2", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer name like Michael Jackson.");
/* Author */
INews news3 = createNews(feed, "News3", "http://www.news.com/news3.html", State.NEW);
IPerson author = fFactory.createPerson(null, news3);
author.setName("Arnold Schwarzenegger");
/* Category */
INews news4 = createNews(feed, "News4", "http://www.news.com/news4.html", State.NEW);
ICategory category = fFactory.createCategory(null, news4);
category.setName("Roberts");
/* Attachment Content */
INews news5 = createNews(feed, "News5", "http://www.news.com/news5.html", State.NEW);
IAttachment attachment = fFactory.createAttachment(null, news5);
attachment.setLink(new URI("http://www.attachment.com/att1news2.file"));
attachment.setType("Hasselhoff");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
/* Contains Any - Single Condition */
{
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Johnny Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny D*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny arnold michael schwarzenegger roberts hasselhoff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny ar?old mic?ael schw?rzenegger rob?rts hasselh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh* arn*d mi*el sch* *rts *elh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Any - Multi Condition (require all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts schwarzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts schw?rzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh* sch*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Any - Multi Condition (require all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts schwarzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts schw?rzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh* sch*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4), true);
assertTrue(result.isEmpty());
}
/* Contains All - Single Condition */
{
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny D*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny arnold michael schwarzenegger roberts hasselhoff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny ar?old mic?ael schw?rzenegger rob?rts hasselh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "joh* arn*d mi*el sch* *rts *elh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael Jackson");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "M?ch?el *ckson");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a longer name like Michael Jackson");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a lo?ger name like Mic*el Jack*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Arnold Schwarzenegger");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news3);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old Schwarz*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news3);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news4);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "r?ber*ts");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news4);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Hasselhoff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "h?ssel*ff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news5);
}
/* Contains All - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "M?ch?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*ckson");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
ISearchCondition condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
ISearchCondition condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "n?me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich*");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "J?ckson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Th?s is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "l*ke");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jac?son");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger n*me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich* *son");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7), false);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarz*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news4");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news4);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "h?ssel*ff");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news5);
}
/* Contains All - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "M?ch?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*ckson");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
ISearchCondition condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
ISearchCondition condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "n?me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich*");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "J?ckson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "l*ke");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jac?son");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger n*me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich* *son");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarz*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news4");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news4);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "h?ssel*ff");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news5);
}
/* Contains Not - Single Condition */
{
ISearchCondition condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny D*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news2, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Michael Jackson");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Mich?el Jack*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news3, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arnold Schwarzenegger");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arn* Sch?arzen?gger");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news4, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Roberts");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "r*b?rts");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news5);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Hasselhoff");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "has?elh*");
result = fModelSearch.searchNews(list(condition), false);
assertSame(result, news1, news2, news3, news4);
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny arnold michael schwarzenegger roberts hasselhoff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny ar?old mic?ael schw?rzenegger rob?rts hasselh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
condition = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh* arn*d mi*el sch* *rts *elh?ff");
result = fModelSearch.searchNews(list(condition), false);
assertTrue(result.isEmpty());
}
/* Contains Not - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Mich?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jack*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arn*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Sch?arzen?gger");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Roberts");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "R?be*s");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Ha?se*");
result = fModelSearch.searchNews(list(condition1, condition2), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Not - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3), true);
assertSame(result, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Mich?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jack*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arn*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Sch?arzen?gger");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Roberts");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "R?be*s");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Ha?se*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1, news2, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6), true);
assertTrue(result.isEmpty());
}
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
/**
* @throws Exception
*/
@Test
public void testSearchEntireNewsAllCasesWithStateCondition() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
/* Title */
INews news1 = createNews(feed, "Johnny Depp", "http://www.news.com/news1.html", State.NEW);
/* Description */
INews news2 = createNews(feed, "News2", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer name like Michael Jackson.");
/* Author */
INews news3 = createNews(feed, "News3", "http://www.news.com/news3.html", State.NEW);
IPerson author = fFactory.createPerson(null, news3);
author.setName("Arnold Schwarzenegger");
/* Category */
INews news4 = createNews(feed, "News4", "http://www.news.com/news4.html", State.NEW);
ICategory category = fFactory.createCategory(null, news4);
category.setName("Roberts");
/* Attachment Content */
INews news5 = createNews(feed, "News5", "http://www.news.com/news5.html", State.NEW);
IAttachment attachment = fFactory.createAttachment(null, news5);
attachment.setLink(new URI("http://www.attachment.com/att1news2.file"));
attachment.setType("Hasselhoff");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchField stateField = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition stateCondition = fFactory.createSearchCondition(stateField, SearchSpecifier.IS, EnumSet.of(INews.State.NEW));
/* Contains Any - Multi Condition (require all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Any - Multi Condition (require all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts schwarzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts schw?rzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh* sch*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
}
/* Contains All - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains All - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2), true);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "M?ch?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*ckson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
ISearchCondition condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
ISearchCondition condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "n?me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich*");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "J?ckson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "l*ke");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jac?son");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger n*me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich* *son");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7, stateCondition), true);
assertSame(result, news2);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarz*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news4");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news4);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "h?ssel*ff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news5);
}
/* Contains Not - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Not - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, stateCondition), true);
assertSame(result, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Mich?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jack*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arn*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Sch?arzen?gger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news2, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Roberts");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news2, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "R?be*s");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Ha?se*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertSame(result, news1, news2, news3);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
}
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
/**
* @throws Exception
*/
@Test
public void testSearchEntireNewsAllCasesWithNegationStateCondition() throws Exception {
try {
/* First add some Types */
IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com/feed.xml"));
/* Title */
INews news1 = createNews(feed, "Johnny Depp", "http://www.news.com/news1.html", State.NEW);
/* Description */
INews news2 = createNews(feed, "News2", "http://www.news.com/news2.html", State.NEW);
news2.setDescription("This is a longer name like Michael Jackson.");
/* Author */
INews news3 = createNews(feed, "News3", "http://www.news.com/news3.html", State.NEW);
IPerson author = fFactory.createPerson(null, news3);
author.setName("Arnold Schwarzenegger");
/* Category */
INews news4 = createNews(feed, "News4", "http://www.news.com/news4.html", State.NEW);
ICategory category = fFactory.createCategory(null, news4);
category.setName("Roberts");
/* Attachment Content */
INews news5 = createNews(feed, "News5", "http://www.news.com/news5.html", State.NEW);
IAttachment attachment = fFactory.createAttachment(null, news5);
attachment.setLink(new URI("http://www.attachment.com/att1news2.file"));
attachment.setType("Hasselhoff");
DynamicDAO.save(feed);
/* Wait for Indexer */
waitForIndexer();
/* All Fields */
ISearchField field = fFactory.createSearchField(IEntity.ALL_FIELDS, fNewsEntityName);
ISearchField stateField = fFactory.createSearchField(INews.STATE, fNewsEntityName);
ISearchCondition stateCondition = fFactory.createSearchCondition(stateField, SearchSpecifier.IS_NOT, EnumSet.of(INews.State.NEW));
/* Contains Any - Multi Condition (require all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Any - Multi Condition (require all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "johnny arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "michael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "roberts schwarzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "jo?nny ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mic?ael");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "rob?rts schw?rzenegger");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "joh* sch*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*rts mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, stateCondition), true);
assertTrue(result.isEmpty());
}
/* Contains All - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news1);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains All - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arnold");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "M?ch?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "*ckson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
ISearchCondition condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
ISearchCondition condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "longer");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "n?me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich*");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "J?ckson");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This is a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "name");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "l*ke");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Michael");
condition8 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Jac?son");
result = fModelSearch.searchNews(list(condition1, condition4, condition5, condition6, condition7, condition8, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "This");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "is");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "a");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "lo?ger n*me");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "like");
condition7 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Mich* *son");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition6, condition7, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "ar?old");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Schwarz*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news4");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "roberts");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "news5");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_ALL, "h?ssel*ff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
}
/* Contains Not - Multi Condition (required all: false) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), false);
assertSame(result, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), false);
assertSame(result, news1, news2, news3, news4, news5);
}
/* Contains Not - Multi Condition (required all: true) */
{
ISearchCondition condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Johnny");
ISearchCondition condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Depp");
List<SearchHit<NewsReference>> result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "D*");
ISearchCondition condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jack*");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Michael");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jackson");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Mich?el");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Jack*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arnold");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Schwarzenegger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Arn*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Sch?arzen?gger");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Roberts");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "R?be*s");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "Ha?se*");
result = fModelSearch.searchNews(list(condition1, condition2, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "johnny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arnold");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "michael");
ISearchCondition condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schwarzenegger");
ISearchCondition condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "roberts");
ISearchCondition condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselhoff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "jo?nny");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "ar?old");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mic?ael");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "schw?rzenegger");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "rob?rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "hasselh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
condition1 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "joh*");
condition2 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "arn*d");
condition3 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "mi*el");
condition4 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "sch*");
condition5 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*rts");
condition6 = fFactory.createSearchCondition(field, SearchSpecifier.CONTAINS_NOT, "*elh?ff");
result = fModelSearch.searchNews(list(condition1, condition2, condition3, condition4, condition5, condition6, stateCondition), true);
assertTrue(result.isEmpty());
}
} catch (PersistenceException e) {
TestUtils.fail(e);
}
}
}