public void CanAddAndSubtract()
 {
     var engine = new Engine();
       Assert.AreEqual(0, engine.Value);
       engine.Digit(1);
       Assert.AreEqual(1, engine.Value);
       engine.Plus();
       Assert.AreEqual(1, engine.Value);
       engine.Digit(2);
       Assert.AreEqual(2, engine.Value);
       engine.Plus();
       Assert.AreEqual(3, engine.Value);
       engine.Digit(3);
       Assert.AreEqual(3, engine.Value);
       engine.Minus();
       Assert.AreEqual(6, engine.Value);
       engine.Digit(4);
       Assert.AreEqual(4, engine.Value);
       engine.Minus();
       Assert.AreEqual(2, engine.Value);
       engine.Digit(5);
       Assert.AreEqual(5, engine.Value);
       engine.Equals();
       Assert.AreEqual(-3, engine.Value);
 }
 public void CanClearAll()
 {
     var engine = new Engine();
       engine.Digit(1);
       engine.Plus();
       engine.Digit(2);
       engine.ClearAll();
       Assert.AreEqual(0, engine.Value);
       engine.Equals();
       Assert.AreEqual(0, engine.Value);
 }
 public void CanAdd()
 {
     var engine = new Engine();
       engine.Digit(1);
       Assert.AreEqual(1, engine.Value);
       engine.Plus();
       Assert.AreEqual(1, engine.Value);
       engine.Digit(2);
       Assert.AreEqual(2, engine.Value);
       engine.Equals();
       Assert.AreEqual(3, engine.Value);
 }
 public void CanDeleteCurrentEntryWhenOperatorIsOnStack()
 {
     var engine = new Engine();
       engine.Digit(1);
       Assert.AreEqual(1, engine.Value);
       engine.Plus();
       Assert.AreEqual(1, engine.Value);
       engine.ClearEntry();
       Assert.AreEqual(0, engine.Value);
       engine.Digit(2);
       Assert.AreEqual(2, engine.Value);
       engine.Equals();
       Assert.AreEqual(3, engine.Value);
 }
 public void PrecedenceTest2()
 {
     var engine = new Engine();
       engine.Digit(1);
       engine.Times();
       engine.Digit(2);
       engine.Plus();
       engine.Digit(3);
       engine.Times();
       engine.Digit(4);
       engine.Equals();
       Assert.AreEqual(20, engine.Value);
 }
 public void CanPlusAfterNegate()
 {
     var engine = new Engine();
       engine.Minus();
       engine.Plus();
       engine.Digit(5);
       engine.Minus();
       engine.Digit(3);
       engine.Equals();
       Assert.AreEqual(2, engine.Value);
 }
 public void CanEnterNegativeMultiDigitNumbers()
 {
     var engine = new Engine();
       engine.Minus();
       Assert.AreEqual(0, engine.Value);
       engine.Digit(1);
       Assert.AreEqual(-1, engine.Value);
       engine.Digit(2);
       Assert.AreEqual(-12, engine.Value);
       engine.Digit(3);
       Assert.AreEqual(-123, engine.Value);
       engine.Plus();
       Assert.AreEqual(-123, engine.Value);
       engine.Minus();
       Assert.AreEqual(-123, engine.Value);
       engine.Digit(4);
       Assert.AreEqual(-4, engine.Value);
       engine.Digit(5);
       Assert.AreEqual(-45, engine.Value);
       engine.Digit(6);
       Assert.AreEqual(-456, engine.Value);
       engine.Equals();
       Assert.AreEqual(-579, engine.Value);
 }
 public void CanEnterDecimalPoints()
 {
     var engine = new Engine();
       engine.Digit(1);
       Assert.AreEqual(1, engine.Value);
       engine.Point();
       Assert.AreEqual(1, engine.Value);
       engine.Digit(2);
       Assert.AreEqual(1.2, engine.Value);
       engine.Digit(3);
       Assert.AreEqual(1.23, engine.Value);
       engine.Plus();
       Assert.AreEqual(1.23, engine.Value);
       engine.Digit(4);
       Assert.AreEqual(4, engine.Value);
       engine.Point();
       Assert.AreEqual(4, engine.Value);
       engine.Digit(5);
       Assert.AreEqual(4.5, engine.Value);
       engine.Digit(6);
       Assert.AreEqual(4.56, engine.Value);
       engine.Equals();
       Assert.AreEqual(5.79, engine.Value);
 }