package eu.stratosphere.sopremo.expressions; import static eu.stratosphere.sopremo.type.JsonUtil.createArrayNode; import java.util.ArrayList; import java.util.Collections; import java.util.List; import nl.jqno.equalsverifier.EqualsVerifier; import org.junit.Assert; import org.junit.Test; import eu.stratosphere.sopremo.type.ArrayNode; import eu.stratosphere.sopremo.type.IJsonNode; import eu.stratosphere.sopremo.type.IntNode; public class ArrayCreationTest extends EvaluableExpressionTest<ArrayCreation> { @Test public void shouldCreateArrayWithListAsParam() { final List<EvaluationExpression> list = new ArrayList<EvaluationExpression>(); list.add(new ConstantExpression(IntNode.valueOf(0))); list.add(EvaluationExpression.VALUE); final IJsonNode result = new ArrayCreation(list).evaluate(IntNode.valueOf(42)); Assert.assertEquals(createArrayNode(IntNode.valueOf(0), IntNode.valueOf(42)), result); } @Test public void shouldReuseTarget() { final ArrayCreation arrayCreation = new ArrayCreation(new ConstantExpression(IntNode.valueOf(42))); final IJsonNode result1 = arrayCreation.evaluate(IntNode.valueOf(42)); final IJsonNode result2 = arrayCreation.evaluate(IntNode.valueOf(42)); Assert.assertEquals(new ArrayNode<IJsonNode>(IntNode.valueOf(42)), result1); Assert.assertSame(result1, result2); Assert.assertEquals(new ArrayNode<IJsonNode>(IntNode.valueOf(42)), result2); } @Override protected ArrayCreation createDefaultInstance(final int index) { return new ArrayCreation(new ConstantExpression(IntNode.valueOf(index))); } /* * (non-Javadoc) * @see eu.stratosphere.sopremo.expressions.OrExpressionTest#initVerifier(nl.jqno.equalsverifier.EqualsVerifier) */ @Override protected void initVerifier(final EqualsVerifier<ArrayCreation> equalVerifier) { super.initVerifier(equalVerifier); equalVerifier.withPrefabValues(List.class, new ArrayList<Object>(), new ArrayList<EvaluationExpression>( Collections.singleton(EvaluationExpression.VALUE))); } }