Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 2nd, 2012  |  syntax: None  |  size: 1.86 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ## Alarm.cs
  2.  
  3.     public class Alarm
  4.     {
  5.         readonly ISensor _sensor;
  6.         readonly double _lowPressureTreshold;
  7.         readonly double _highPressureTreshold;
  8.  
  9.         double _alarmOn = 0;
  10.  
  11.         public Alarm() : this(new Sensor())
  12.         {
  13.         }
  14.  
  15.         public Alarm(ISensor sensor) : this(sensor, 17, 21)
  16.         {
  17.         }
  18.  
  19.         public Alarm(ISensor sensor, double lowPressureTreshold, double highPressureTreshold)
  20.         {
  21.                 _sensor = sensor;
  22.                 _lowPressureTreshold = lowPressureTreshold;
  23.                 _highPressureTreshold = highPressureTreshold;
  24.         }
  25.  
  26.         public double LowPressureTreshold
  27.         {
  28.                 get
  29.                 {
  30.                         return _lowPressureTreshold;
  31.                 }
  32.         }
  33.  
  34.         public double HighPressureTreshold
  35.         {
  36.                 get
  37.                 {
  38.                         return _highPressureTreshold;
  39.                 }
  40.         }
  41.  
  42.  
  43.  
  44.  
  45.         public void Check()
  46.         {
  47.             double psiPressureValue = _sensor.PopNextPressurePsiValue();
  48.  
  49.                 if (psiPressureValue < LowPressureTreshold)
  50.                 {
  51.                         _alarmOn = psiPressureValue - LowPressureTreshold;
  52.                 }
  53.                 else if (HighPressureTreshold < psiPressureValue)
  54.                 {
  55.                         _alarmOn = psiPressureValue - HighPressureTreshold;
  56.                 }
  57.         }
  58.  
  59.         public void VisitAlarm(IAlarmVisitor visitor)
  60.         {
  61.                 visitor.VisitAlarmOn(_alarmOn);
  62.         }
  63.  
  64.     }
  65.  
  66.  
  67. ## IAlarmVisitor.cs
  68.  
  69.         public interface IAlarmVisitor
  70.         {
  71.                 void VisitAlarmOn(double alarmOn);
  72.         }
  73.  
  74. ## MockAlarmVisitor.cs
  75.  
  76.         public class MockAlarmVisitor: IAlarmVisitor
  77.         {
  78.                 private bool? _expectedValue = null;
  79.                 private bool? _actualValue = null;
  80.  
  81.                 void IAlarmVisitor.VisitAlarmOn(double alarmOn)
  82.                 {
  83.                         _actualValue = (alarmOn != 0);
  84.                 }
  85.  
  86.                 public void SetExpectedCallVisitAlarmOn(bool expectedValue)
  87.                 {
  88.                         _expectedValue =expectedValue;                                         
  89.                 }
  90.  
  91.                 public void Verify()
  92.                 {
  93.                         bool ok = (_expectedValue == _actualValue);
  94.                         if (ok == false)
  95.                         {
  96.                                 throw new Exception(string.Format("Not as expcted: expected value: {0}, actual value: {1}", _expectedValue, _actualValue));
  97.                         }
  98.                        
  99.                 }
  100.         }