/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.builder;
import org.junit.Test;
import com.enonic.cms.core.content.index.queryexpression.ArrayExpr;
import com.enonic.cms.core.content.index.queryexpression.ValueExpr;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
/**
* Created by IntelliJ IDEA.
* User: rmh
* Date: 11/23/11
* Time: 12:27 PM
*/
public class IndexValueResolverTest
{
@Test
public void testArrayExpressionAsString()
{
Object[] result =
ExpressionValueResolver.toValues( new ArrayExpr( new ValueExpr[]{new ValueExpr( "abc" ), new ValueExpr( "efg" )} ) );
assertEquals( "abc", result[0].toString() );
assertEquals( "efg", result[1].toString() );
}
@Test
public void testArrayExpressionAsNumber()
{
Object[] result = ExpressionValueResolver.toValues( new ArrayExpr( new ValueExpr[]{new ValueExpr( 1 ), new ValueExpr( 2 )} ) );
assertEquals( 2, result.length );
Number r0 = (Number) result[0];
Number r1 = (Number) result[1];
assertEquals( new Double( 1 ), r0.doubleValue() );
assertEquals( new Double( 2 ), r1.doubleValue() );
}
@Test
public void testValueExpressionAsNumber()
{
Object[] result = ExpressionValueResolver.toValues( new ValueExpr( 1 ) );
assertEquals( 1, result.length );
Number r0 = (Number) result[0];
assertEquals( new Double( 1 ), r0.doubleValue() );
}
@Test
public void testToValuesString()
{
Object result = ExpressionValueResolver.toValue( new ValueExpr( "abc" ) );
assertTrue( result instanceof String );
assertEquals( result.toString(), "abc" );
}
@Test
public void testToValuesNumber()
{
Object result = ExpressionValueResolver.toValue( new ValueExpr( 123 ) );
assertTrue( result instanceof Number );
assertEquals( new Double( 123 ), ( (Number) result ).doubleValue() );
}
@Test
public void testExpressionToValue()
{
Object result = ExpressionValueResolver.toValue( new ValueExpr( "123" ) );
assertTrue( result instanceof String );
result = ExpressionValueResolver.toValue( new ValueExpr( 123 ) );
assertEquals( new Float( 123 ), result );
result = ExpressionValueResolver.toValue( new ValueExpr( new Double( "123.0" ) ) );
assertTrue( result instanceof Double );
result = ExpressionValueResolver.toValue( new ValueExpr( new Float( "123.0" ) ) );
assertTrue( result instanceof Float );
result = ExpressionValueResolver.toValue( new ValueExpr( new Long( "123" ) ) );
assertTrue( result instanceof Long );
}
}