package org.molgenis.charts.highcharts.convert;
import org.molgenis.charts.MolgenisSerieType;
import org.molgenis.charts.data.BoxPlotSerie;
import org.molgenis.charts.data.XYData;
import org.molgenis.charts.data.XYDataSerie;
import org.molgenis.charts.highcharts.basic.Series;
import org.molgenis.data.meta.AttributeType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.*;
@ContextConfiguration
public class HighchartSeriesUtilTest
{
@Autowired
private HighchartSeriesUtil highchartSeriesUtil;
@BeforeMethod
public void setUp()
{
highchartSeriesUtil = new HighchartSeriesUtil();
}
@Test
public void convertDateTimeToMilliseconds()
{
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2014, 1, 1, 1, 1, 1);
final TimeZone timeZone = calendar.getTimeZone();
long offset = timeZone.getOffset(calendar.getTime().getTime());
Long correctResult = offset + calendar.getTime().getTime();
assertEquals(highchartSeriesUtil.convertDateTimeToMilliseconds(calendar.getTime()), correctResult);
}
@Test
public void convertDateToMilliseconds()
{
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2014, 1, 1, 1, 1, 1);
final TimeZone timeZone = calendar.getTimeZone();
long offset = timeZone.getOffset(calendar.getTime().getTime());
long notCorrectResult = offset + calendar.getTime().getTime();
Long correctResult = offset + calendar.getTime().getTime() - 3661000l;
assertNotEquals(highchartSeriesUtil.convertDateToMilliseconds(calendar.getTime()), notCorrectResult);
assertEquals(highchartSeriesUtil.convertDateToMilliseconds(calendar.getTime()), correctResult);
}
@Test
public void convertValueDateTime()
{
AttributeType fieldTypeEnum = AttributeType.DATE_TIME;
Date value = mock(Date.class);
assertTrue(highchartSeriesUtil.convertValue(fieldTypeEnum, value) instanceof Long);
}
@Test
public void convertValueDate()
{
AttributeType fieldTypeEnum = AttributeType.DATE;
Date value = mock(Date.class);
assertTrue(highchartSeriesUtil.convertValue(fieldTypeEnum, value) instanceof Long);
}
@Test
public void convertValueString()
{
AttributeType fieldTypeEnum = AttributeType.STRING;
String value = "test";
assertTrue(highchartSeriesUtil.convertValue(fieldTypeEnum, value) instanceof String);
assertEquals(highchartSeriesUtil.convertValue(fieldTypeEnum, value), value);
}
@Test
public void convertValueInt()
{
AttributeType fieldTypeEnum = AttributeType.INT;
Integer value = Integer.valueOf("1");
assertTrue(highchartSeriesUtil.convertValue(fieldTypeEnum, value) instanceof Integer);
assertEquals(highchartSeriesUtil.convertValue(fieldTypeEnum, value), value);
}
@Test
public void parseXYDataToList()
{
AttributeType xValueFieldTypeEnum = AttributeType.DECIMAL;
AttributeType yValueFieldTypeEnum = AttributeType.DECIMAL;
Double xvalue = Double.valueOf("1.1");
Double yvalue = Double.valueOf("2.2");
List<XYData> xydata = new ArrayList<XYData>();
xydata.add(new XYData(xvalue, yvalue));
List<Object> list = highchartSeriesUtil.parseXYDataToList(xydata, xValueFieldTypeEnum, yValueFieldTypeEnum);
assertTrue(list.size() == 1);
assertTrue(((List<Object>) list.get(0)).size() == 2);
}
@Test
public void parseBoxPlotSerieToSeries()
{
final String name = "test";
final List<Double[]> listOfDoubleArrays = Arrays.<Double[]>asList(new Double[] { 0d, 0d, 0d, 0d, 0d });
BoxPlotSerie boxPlotSerie = mock(BoxPlotSerie.class);
when(boxPlotSerie.getName()).thenReturn(name);
when(boxPlotSerie.getData()).thenReturn(listOfDoubleArrays);
Series series = highchartSeriesUtil.parseBoxPlotSerieToSeries(boxPlotSerie);
assertEquals(series.getName(), name);
assertEquals(series.getData(), listOfDoubleArrays);
}
@Test
public void parsexYDataSerieToSeries()
{
final String name = "test";
final MolgenisSerieType molgenisSerieType = MolgenisSerieType.SCATTER;
XYDataSerie xYDataSerie = mock(XYDataSerie.class);
when(xYDataSerie.getName()).thenReturn(name);
when(xYDataSerie.getType()).thenReturn(molgenisSerieType);
when(xYDataSerie.getAttributeXFieldTypeEnum()).thenReturn(AttributeType.DECIMAL);
when(xYDataSerie.getAttributeYFieldTypeEnum()).thenReturn(AttributeType.DECIMAL);
Series series = highchartSeriesUtil.parsexYDataSerieToSeries(xYDataSerie);
assertEquals(series.getName(), name);
assertEquals(series.getType(), "scatter");
assertNull(series.getMarker());
assertNull(series.getLineWidth());
}
}