package com.nimbits.it.ha;
import com.nimbits.client.model.point.Point;
import com.nimbits.client.model.point.PointModel;
import com.nimbits.client.model.user.User;
import com.nimbits.client.model.value.Value;
import com.nimbits.it.AbstractNimbitsTest;
import org.junit.Test;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
/**
*fix: doubleValue is rounded to integer.
Short description: database stores double values without signs after dot.
Scenario:
Create datapoint on one of the instances.
Record some daouble values into the datapoint: 0.1; 0.2; 0.3; 0.4 and so on.
Read all values (for example Rest '/series' or from database: nimbits.valuestore).
[Expected]: Values should be stored as double.
[Actual]: Values are rounded to integer.
*/
public class RoundingTestAbstract extends AbstractNimbitsTest {
@Test
public void testScenario() {
User me = nimbits.getMe();
Point p = nimbits.addPoint(me, new PointModel.Builder().create());
log(p);
String pname = p.getName().getValue();
double[] sample = {1.1, 1.2, 1.3, 1.4, 1.5, 0.0001, 1122.0, -123.2345, 222.001};
for (int i = 0; i < sample.length; i++) {
Value vx = nimbits.recordValueSync(pname, new Value.Builder()
.doubleValue(sample[i])
.meta(String.valueOf(i))
.create());
log(vx);
}
sleep(3);
List<Value> valueList = nimbits.getValues(p, 10);
Collections.reverse(valueList);
assertFalse(valueList.isEmpty());
for (int i = 0; i < sample.length; i++) {
assertEquals(sample[i], valueList.get(i).getDoubleValue(), 0.00001);
}
}
}