/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.query; import java.util.Set; import org.elasticsearch.common.collect.Sets; import org.joda.time.DateTime; import org.joda.time.ReadableDateTime; import org.junit.Test; import static org.junit.Assert.*; public class QueryFieldAndMultiValueTest { @Test public void testMultiValueNumeric() { Set<QueryValue> queryValues = Sets.newHashSet(); queryValues.add( new QueryValue( 1 ) ); queryValues.add( new QueryValue( 2 ) ); queryValues.add( new QueryValue( null ) ); QueryFieldAndMultipleValues queryFieldAndMultipleValues = new QueryFieldAndMultipleValues( "test", queryValues ); final Object[] values = queryFieldAndMultipleValues.getValues(); assertEquals( 2, values.length ); for ( Object value : values ) { assertTrue( value instanceof Double ); } final String fieldName = queryFieldAndMultipleValues.getFieldName(); assertEquals( "test.number", fieldName ); } @Test public void testMultiValueDates() { Set<QueryValue> queryValues = Sets.newHashSet(); queryValues.add( new QueryValue( new DateTime( 2012, 5, 2, 9, 46 ) ) ); queryValues.add( new QueryValue( new DateTime( 2011, 5, 2, 9, 46 ) ) ); queryValues.add( new QueryValue( null ) ); QueryFieldAndMultipleValues queryFieldAndMultipleValues = new QueryFieldAndMultipleValues( "test", queryValues ); final Object[] values = queryFieldAndMultipleValues.getValues(); assertEquals( 2, values.length ); for ( Object value : values ) { assertTrue( value instanceof ReadableDateTime ); } final String fieldName = queryFieldAndMultipleValues.getFieldName(); assertEquals( "test.date", fieldName ); } @Test public void testEmptyValues() { Set<QueryValue> queryValues = Sets.newHashSet(); queryValues.add( new QueryValue( null ) ); queryValues.add( new QueryValue( null ) ); queryValues.add( new QueryValue( null ) ); QueryFieldAndMultipleValues queryFieldAndMultipleValues = new QueryFieldAndMultipleValues( "test", queryValues ); final Object[] values = queryFieldAndMultipleValues.getValues(); assertEquals( 0, values.length ); final String fieldName = queryFieldAndMultipleValues.getFieldName(); assertEquals( "test", fieldName ); } @Test public void testMixedValuesShouldYieldString() { Set<QueryValue> queryValues = Sets.newHashSet(); queryValues.add( new QueryValue( 1 ) ); queryValues.add( new QueryValue( new DateTime( 2012, 5, 2, 9, 46 ) ) ); queryValues.add( new QueryValue( null ) ); queryValues.add( new QueryValue( "testValue" ) ); QueryFieldAndMultipleValues queryFieldAndMultipleValues = new QueryFieldAndMultipleValues( "test", queryValues ); final Object[] values = queryFieldAndMultipleValues.getValues(); assertEquals( 3, values.length ); for ( Object value : values ) { assertTrue( value instanceof String ); } final String fieldName = queryFieldAndMultipleValues.getFieldName(); assertEquals( "test", fieldName ); } }