static void Main(string[] args) { var rpnEngine = new RpnEngine(); var log = new Logger(eLogLevel.Debug); while (true) { try { Console.WriteLine("Please enter a valid RPN string to be calculated:"); var input = Console.ReadLine(); rpnEngine.CalculateRpn(input); Console.WriteLine("Another? (y/n)"); var response = Console.ReadLine(); if (response == "n" || response == "N") { break; } } catch (Exception ex) { var message = $"Caught exception running. Message was {ex.Message}. Don't do that!"; log.Fatal(message); Console.WriteLine(message); } } }
public void rpn_exp_test() { var input = "10 ^ 5"; var fakeLog = A.Fake <Logger>(); var fakeCalc = A.Fake <Calculator>(); var testRPN = new RpnEngine(fakeLog, fakeCalc); testRPN.CalculateRpn(input); A.CallTo(() => fakeCalc.Power(10, 5)).MustHaveHappened(); }
public void rpn_add_test() { var input = "12 + 12"; var fakeLog = A.Fake <Logger>(); var fakeCalc = A.Fake <Calculator>(); var testRPN = new RpnEngine(fakeLog, fakeCalc); testRPN.CalculateRpn(input); A.CallTo(() => fakeCalc.Add(12, 12)).MustHaveHappened(); }
public void RpnEngine_Calls_Logger_Debug() { Calculator calc = A.Fake <Calculator>(); Logger log = A.Fake <Logger>(); RpnEngine myRpnEngine = new RpnEngine(calc, log); string input = "2 2 +"; myRpnEngine.CalculateRpn(input); A.CallTo(() => log.Debug("2")).MustHaveHappened(); }
public void RpnEngine_BadInput_Exception() { Calculator calc = A.Fake <Calculator>(); Logger log = A.Fake <Logger>(); RpnEngine myRpnEngine = new RpnEngine(calc, log); string input = "3 4 applesauce"; Action act = () => myRpnEngine.CalculateRpn(input); act.Should().Throw <ArgumentException>(); }
public void RpnEngine_BadInput_Logger_Fatal() { Calculator calc = A.Fake <Calculator>(); Logger log = A.Fake <Logger>(); RpnEngine myRpnEngine = new RpnEngine(calc, log); string input = "3 4 applesauce"; try { myRpnEngine.CalculateRpn(input); } catch (Exception e) { A.CallTo(() => log.Fatal($"Could not parse [applesauce]")).MustHaveHappened(); } }
public void RpnEngine_Power_Success() { Calculator calc = A.Fake <Calculator>(); Logger log = A.Fake <Logger>(); RpnEngine myRpnEngine = new RpnEngine(calc, log); string input = "3 3 ^"; var output = new StringWriter(); Console.SetOut(output); myRpnEngine.CalculateRpn(input); var stdout = new StreamWriter(Console.OpenStandardOutput()); stdout.AutoFlush = true; Console.SetOut(stdout); output.ToString().Should().Be("27\r\n", "Because power..."); }