- ## Alarm.cs
- public class Alarm
- {
- readonly ISensor _sensor;
- readonly double _lowPressureTreshold;
- readonly double _highPressureTreshold;
- double _alarmOn = 0;
- public Alarm() : this(new Sensor())
- {
- }
- public Alarm(ISensor sensor) : this(sensor, 17, 21)
- {
- }
- public Alarm(ISensor sensor, double lowPressureTreshold, double highPressureTreshold)
- {
- _sensor = sensor;
- _lowPressureTreshold = lowPressureTreshold;
- _highPressureTreshold = highPressureTreshold;
- }
- public double LowPressureTreshold
- {
- get
- {
- return _lowPressureTreshold;
- }
- }
- public double HighPressureTreshold
- {
- get
- {
- return _highPressureTreshold;
- }
- }
- public void Check()
- {
- double psiPressureValue = _sensor.PopNextPressurePsiValue();
- if (psiPressureValue < LowPressureTreshold)
- {
- _alarmOn = psiPressureValue - LowPressureTreshold;
- }
- else if (HighPressureTreshold < psiPressureValue)
- {
- _alarmOn = psiPressureValue - HighPressureTreshold;
- }
- }
- public void VisitAlarm(IAlarmVisitor visitor)
- {
- visitor.VisitAlarmOn(_alarmOn);
- }
- }
- ## IAlarmVisitor.cs
- public interface IAlarmVisitor
- {
- void VisitAlarmOn(double alarmOn);
- }
- ## MockAlarmVisitor.cs
- public class MockAlarmVisitor: IAlarmVisitor
- {
- private bool? _expectedValue = null;
- private bool? _actualValue = null;
- void IAlarmVisitor.VisitAlarmOn(double alarmOn)
- {
- _actualValue = (alarmOn != 0);
- }
- public void SetExpectedCallVisitAlarmOn(bool expectedValue)
- {
- _expectedValue =expectedValue;
- }
- public void Verify()
- {
- bool ok = (_expectedValue == _actualValue);
- if (ok == false)
- {
- throw new Exception(string.Format("Not as expcted: expected value: {0}, actual value: {1}", _expectedValue, _actualValue));
- }
- }
- }