package org.molgenis.data.rsql;
import org.molgenis.data.meta.AttributeType;
import org.molgenis.data.meta.model.Attribute;
import org.molgenis.data.meta.model.EntityType;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Iterator;
import static com.google.common.collect.Lists.newArrayList;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.molgenis.data.meta.AttributeType.*;
import static org.testng.Assert.assertEquals;
public class RSQLValueParserTest
{
private RSQLValueParser rSqlValueParser;
@BeforeMethod
public void setUpBeforeMethod()
{
rSqlValueParser = new RSQLValueParser();
}
@DataProvider(name = "parseProvider")
public static Iterator<Object[]> parseProvider()
{
return newArrayList(new Object[] { ONE_TO_MANY, INT, 1 }, new Object[] { ONE_TO_MANY, STRING, "1" },
new Object[] { XREF, INT, 1 }, new Object[] { XREF, STRING, "1" }).iterator();
}
@Test(dataProvider = "parseProvider")
public void parse(AttributeType attrType, AttributeType refIdAttrType, Object parsedValue)
{
Attribute oneToManyAttr = mock(Attribute.class);
when(oneToManyAttr.getDataType()).thenReturn(attrType);
EntityType refEntity = mock(EntityType.class);
Attribute refIdAttr = mock(Attribute.class);
when(refIdAttr.getDataType()).thenReturn(refIdAttrType);
when(refEntity.getIdAttribute()).thenReturn(refIdAttr);
when(oneToManyAttr.getRefEntity()).thenReturn(refEntity);
assertEquals(parsedValue, rSqlValueParser.parse("1", oneToManyAttr));
}
}