package com.openxc; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import com.openxc.measurements.BaseMeasurement; import com.openxc.measurements.VehicleDoorStatus; import com.openxc.messages.EventedSimpleVehicleMessage; import com.openxc.messages.SimpleVehicleMessage; import com.openxc.messages.VehicleMessage; import com.openxc.units.Meter; import com.openxc.util.Range; public class MeasurementTest { TestMeasurement measurement; Range<Meter> range; @Before public void setUp() { range = new Range<Meter>(new Meter(0.0), new Meter(101.2)); measurement = new TestMeasurement(new Meter(10.1), range); } @Test public void getDouble() { assertThat(measurement.getValue().doubleValue(), equalTo(10.1)); } @Test public void hasRange() { assertTrue(measurement.hasRange()); } @Test public void getRange() { assertThat(measurement.getRange(), equalTo(range)); } @Test public void ageIsPositive() { TestUtils.pause(10); assertThat(measurement.getAge(), greaterThan(Long.valueOf(0))); } @Test public void equality() { TestMeasurement anotherMeasurement = new TestMeasurement(new Meter(10.1), range); TestMeasurement inequalMeasurement = new TestMeasurement(new Meter(12.0), range); assertTrue(measurement.equals(anotherMeasurement)); assertFalse(measurement.equals(inequalMeasurement)); } @Test public void toVehicleMessage() { measurement = new TestMeasurement(10.1); VehicleMessage message = measurement.toVehicleMessage(); assertTrue(message instanceof SimpleVehicleMessage); SimpleVehicleMessage simpleMessage = message.asSimpleMessage(); assertEquals(simpleMessage.getName(), TestMeasurement.ID); assertEquals(simpleMessage.getValue(), measurement.getValue().doubleValue()); } @Test public void eventedToVehicleMessage() { VehicleDoorStatus doorMeasurement = new VehicleDoorStatus( VehicleDoorStatus.DoorId.DRIVER, true); VehicleMessage message = doorMeasurement.toVehicleMessage(); assertTrue(message instanceof EventedSimpleVehicleMessage); EventedSimpleVehicleMessage eventedMessage = message.asEventedMessage(); assertEquals(eventedMessage.getName(), VehicleDoorStatus.ID); assertEquals(eventedMessage.getValue(), doorMeasurement.getValue().toString()); assertEquals(eventedMessage.getEvent(), doorMeasurement.getEvent().booleanValue()); } public static class TestMeasurement extends BaseMeasurement<Meter> { public final static String ID = "test_generic_name"; public TestMeasurement(Meter value, Range<Meter> range) { super(value, range); } public TestMeasurement(Number value) { super(new Meter(value)); } @Override public String getGenericName() { return ID; } } }