/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb; import junit.framework.Assert; import junit.framework.TestCase; public class SearchBuilderTest extends TestCase { public void testSimpleUserInput() { SearchStringBuffer userInput; userInput = SearchBuilder.buildFromUserInput( "A", false, false, false ); Assert.assertEquals( "", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", true, false, false ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", false, true, false ); Assert.assertEquals( "(data/* CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", false, false, true ); Assert.assertEquals( "(fulltext CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", true, true, false ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR data/* CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", true, false, true ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR fulltext CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", false, true, true ); Assert.assertEquals( "(data/* CONTAINS \"A\" OR fulltext CONTAINS \"A\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A", true, true, true ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR data/* CONTAINS \"A\" OR fulltext CONTAINS \"A\")", userInput.toString() ); } public void testAdvancedUserInput() { SearchStringBuffer userInput; userInput = SearchBuilder.buildFromUserInput( "A B", false, false, false ); Assert.assertEquals( "", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", true, false, false ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\") AND (title CONTAINS \"B\" OR name CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", false, true, false ); Assert.assertEquals( "(data/* CONTAINS \"A\") AND (data/* CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", false, false, true ); Assert.assertEquals( "(fulltext CONTAINS \"A\") AND (fulltext CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", true, true, false ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR data/* CONTAINS \"A\") AND (title CONTAINS \"B\" OR name CONTAINS \"B\" OR data/* CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", true, false, true ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR fulltext CONTAINS \"A\") AND (title CONTAINS \"B\" OR name CONTAINS \"B\" OR fulltext CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", false, true, true ); Assert.assertEquals( "(data/* CONTAINS \"A\" OR fulltext CONTAINS \"A\") AND (data/* CONTAINS \"B\" OR fulltext CONTAINS \"B\")", userInput.toString() ); userInput = SearchBuilder.buildFromUserInput( "A B", true, true, true ); Assert.assertEquals( "(title CONTAINS \"A\" OR name CONTAINS \"A\" OR data/* CONTAINS \"A\" OR fulltext CONTAINS \"A\") AND (title CONTAINS \"B\" OR name CONTAINS \"B\" OR data/* CONTAINS \"B\" OR fulltext CONTAINS \"B\")", userInput.toString() ); } }