/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.sim;
import java.util.List;
import org.diirt.util.time.TimeInterval;
import org.diirt.vtype.AlarmSeverity;
import org.diirt.vtype.VDouble;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import static java.time.Duration.*;
import static org.diirt.datasource.test.TimeMatchers.*;
import java.time.Instant;
import org.junit.BeforeClass;
/**
* Tests uniform noise distribution function
*
* @author carcassi
*/
public class ReplayTest {
@Test
public void replayValues() {
// Creates the function
Instant start = Instant.now();
Replay replay = (Replay) NameParser.createFunction("replay(\"./src/test/resources/org/diirt/datasource/replay/parse1.xml\")");
List<VDouble> values = replay.createValues(TimeInterval.after(ofMillis(1000), start));
assertThat(values.size(), equalTo(4));
// Check first value
VDouble value = values.get(0);
assertThat(value.getValue(), equalTo(0.0));
assertThat(value.getTimestamp(), equalTo(Instant.ofEpochSecond(0, 0)));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.NONE));
assertThat(value.getAlarmName(), equalTo("NONE"));
assertThat(value.getTimeUserTag(), equalTo(0));
assertThat(value.getLowerCtrlLimit(), equalTo(-10.0));
assertThat(value.getLowerDisplayLimit(), equalTo(-10.0));
assertThat(value.getLowerAlarmLimit(), equalTo(-9.0));
assertThat(value.getLowerWarningLimit(), equalTo(-8.0));
assertThat(value.getUpperWarningLimit(), equalTo(8.0));
assertThat(value.getUpperAlarmLimit(), equalTo(9.0));
assertThat(value.getUpperCtrlLimit(), equalTo(10.0));
assertThat(value.getUpperDisplayLimit(), equalTo(10.0));
// Check second value
value = values.get(1);
assertThat(value.getValue(), equalTo(1.0));
assertThat(value.getTimestamp(), equalTo(Instant.ofEpochSecond(0, 0).plus(ofMillis(100))));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.INVALID));
assertThat(value.getAlarmName(), equalTo("RECORD"));
assertThat(value.getTimeUserTag(), equalTo(0));
// Check third value
value = values.get(2);
assertThat(value.getValue(), equalTo(2.0));
assertThat(value.getTimestamp(), equalTo(Instant.ofEpochSecond(0, 0).plus(ofMillis(200))));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.NONE));
assertThat(value.getAlarmName(), equalTo("NONE"));
assertThat(value.getTimeUserTag(), equalTo(0));
// Check fourth value
value = values.get(3);
assertThat(value.getValue(), equalTo(3.0));
assertThat(value.getTimestamp(), equalTo(Instant.ofEpochSecond(0, 0).plus(ofMillis(500))));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.NONE));
assertThat(value.getAlarmName(), equalTo("NONE"));
assertThat(value.getTimeUserTag(), equalTo(0));
}
@BeforeClass
public static void initializeParser() {
Replay replay = (Replay) NameParser.createFunction("replay(\"./src/test/resources/org/diirt/datasource/replay/parse2.xml\")");
if (replay.hashCode() == 0)
System.out.println("");
}
@Test
public void adjustTime() {
// Creates the function
Instant start = Instant.now();
Replay replay = (Replay) NameParser.createFunction("replay(\"./src/test/resources/org/diirt/datasource/replay/parse2.xml\")");
List<VDouble> values = replay.createValues(TimeInterval.after(ofMillis(6000), start));
assertThat(values.size(), equalTo(7));
// Check first value
VDouble value = values.get(0);
assertThat(value.getValue(), equalTo(0.0));
assertThat(value.getTimestamp(), within(TimeInterval.around(ofMillis(1), start)));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.NONE));
assertThat(value.getAlarmName(), equalTo("NONE"));
assertThat(value.getTimeUserTag(), equalTo(0));
assertThat(value.getLowerCtrlLimit(), equalTo(-10.0));
assertThat(value.getLowerDisplayLimit(), equalTo(-10.0));
assertThat(value.getLowerAlarmLimit(), equalTo(-9.0));
assertThat(value.getLowerWarningLimit(), equalTo(-8.0));
assertThat(value.getUpperWarningLimit(), equalTo(8.0));
assertThat(value.getUpperAlarmLimit(), equalTo(9.0));
assertThat(value.getUpperCtrlLimit(), equalTo(10.0));
assertThat(value.getUpperDisplayLimit(), equalTo(10.0));
// Check second value
value = values.get(1);
assertThat(value.getValue(), equalTo(1.0));
assertThat(value.getTimestamp(), within(TimeInterval.around(ofMillis(1), start.plus(ofMillis(1000)))));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.INVALID));
assertThat(value.getAlarmName(), equalTo("RECORD"));
assertThat(value.getTimeUserTag(), equalTo(0));
// Check third value
value = values.get(2);
assertThat(value.getValue(), equalTo(2.0));
assertThat(value.getTimestamp(), within(TimeInterval.around(ofMillis(1), start.plus(ofMillis(2000)))));
assertThat(value.getAlarmSeverity(), equalTo(AlarmSeverity.NONE));
assertThat(value.getAlarmName(), equalTo("NONE"));
assertThat(value.getTimeUserTag(), equalTo(0));
}
}