package pl.llp.aircasting.model;
import pl.llp.aircasting.InjectedTestRunner;
import pl.llp.aircasting.New;
import pl.llp.aircasting.model.events.SensorEvent;
import pl.llp.aircasting.model.internal.MeasurementLevel;
import org.hamcrest.core.IsEqual;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@RunWith(InjectedTestRunner.class)
public class SensorTest
{
private SensorEvent event;
private Sensor sensor;
@Before
public void setup()
{
event = New.sensorEvent();
sensor = new Sensor(event);
}
@Test
public void shouldProvideTooHighThreshold()
{
assertThat(sensor.getThreshold(MeasurementLevel.VERY_HIGH), equalTo(event.getVeryHigh()));
}
@Test
public void shouldProvideHighThreshold()
{
assertThat(sensor.getThreshold(MeasurementLevel.HIGH), equalTo(event.getHigh()));
}
@Test
public void shouldProvideMidThreshold()
{
assertThat(sensor.getThreshold(MeasurementLevel.MID), equalTo(event.getMid()));
}
@Test
public void shouldProvideLowThreshold()
{
assertThat(sensor.getThreshold(MeasurementLevel.LOW), equalTo(event.getLow()));
}
@Test
public void shouldProvideVeryLowThreshold()
{
assertThat(sensor.getThreshold(MeasurementLevel.VERY_LOW), equalTo(event.getVeryLow()));
}
@Test
public void shouldReturnLowerOneOnTheBorder()
{
assertThat(sensor.level(event.getLow()), IsEqual.equalTo(MeasurementLevel.VERY_LOW));
assertThat(sensor.level(event.getMid()), IsEqual.equalTo(MeasurementLevel.LOW));
assertThat(sensor.level(event.getHigh()), IsEqual.equalTo(MeasurementLevel.MID));
assertThat(sensor.level(event.getVeryHigh()), IsEqual.equalTo(MeasurementLevel.HIGH));
}
}