public MainWindow() { InitializeComponent(); this.DataContext = viewModel; containerManager = new CalculatorManager(viewModel); containerManager.InitializeContainer(); // cm.RefreshExensions(); BindingOperations.EnableCollectionSynchronization(viewModel.CalcAddInOperators, viewModel.syncCalcAddInOperators); BindingOperations.EnableCollectionSynchronization(viewModel.ActivatedExtensions, viewModel.syncActivatedExtensions); }
public void Requirement1() { var calcManager = new CalculatorManager(new CalculatorConfigModel() { MaximumNumber = int.MaxValue }); var request = _parseManager.ParseRequest("1,5000"); var answer = calcManager.ProcessCalculations(request); Assert.AreEqual(answer, 5001); var request1 = _parseManager.ParseRequest("5,tytyt"); var answer1 = calcManager.ProcessCalculations(request1); Assert.AreEqual(answer1, 5); }
public void Execute_PrintsIntroMessage() { var calcStub = new Mock <ICalculator>(); calcStub.Setup(x => x.Calculate(It.IsAny <string>())).Returns(new CalculationResult()); var consoleMock = new ConsoleWrapperFake(); string expectedIntroMessage = "Enter numbers separated by commas or new line (CTRL+ENTER)." + Environment.NewLine + "When done, press ENTER."; var calcManager = new CalculatorManager(calcStub.Object, consoleMock); calcManager.Execute(); Assert.Contains(expectedIntroMessage, consoleMock.WriteLog); }
public void Execute_CalculatorComputesResult_PrintsFormula() { string formula = "1+2+3=6"; var calcStub = new Mock <ICalculator>(); calcStub.Setup(x => x.Calculate(It.IsAny <string>())).Returns(new CalculationResult { Formula = formula }); var consoleMock = new ConsoleWrapperFake(); string expectedResultMessage = $"Formula: {formula}"; var calcManager = new CalculatorManager(calcStub.Object, consoleMock); calcManager.Execute(); Assert.Contains(expectedResultMessage, consoleMock.WriteLog); }
public void Execute_CalculatorComputesResult_PrintsResult() { int result = 123; var calcStub = new Mock <ICalculator>(); calcStub.Setup(x => x.Calculate(It.IsAny <string>())).Returns(new CalculationResult { Result = result }); var consoleMock = new ConsoleWrapperFake(); string expectedResultMessage = $"Result: {result}"; var calcManager = new CalculatorManager(calcStub.Object, consoleMock); calcManager.Execute(); Assert.Contains(expectedResultMessage, consoleMock.WriteLog); }
public CalculatorAddSumSteps(FeatureContext featureContext, ScenarioContext scenarioContext) { _featureContext = featureContext; _scenarioContext = scenarioContext; _memories = _featureContext.Get<Memories>("Memories"); if (_memories == null) { _memories=new Memories(); _memories.Numbers=new List<int>(); _featureContext.Add("Memories", _memories); } _calculatorManager = new CalculatorManager(_memories); }
static void Main(string[] args) { Console.WriteLine("Command"); Console.WriteLine("Calculator Example\n"); var calculator = new Calculator(); var calculatorManager = new CalculatorManager(); calculatorManager.Execute(new CalculatorOperation(calculator, Add, 1000)); calculatorManager.Execute(new CalculatorOperation(calculator, Subtract, 200)); calculatorManager.Execute(new CalculatorOperation(calculator, Multiply, 2)); calculatorManager.Execute(new CalculatorOperation(calculator, Divide, 4)); calculatorManager.Undo(); calculatorManager.Undo(); calculatorManager.Execute(new CalculatorOperation(calculator, Multiply, 3)); calculatorManager.Execute(new CalculatorOperation(calculator, Divide, 5)); calculatorManager.Undo(); calculatorManager.Redo(); }
public void Execute_EnteringNewLineKey_AddsNewLineCharacterToUserInputString() { var calcMock = new Mock <ICalculator>(); calcMock.Setup(x => x.Calculate(It.IsAny <string>())).Returns(new CalculationResult()); var consoleStub = new ConsoleWrapperFake(); consoleStub.KeysToRead.Clear(); consoleStub.KeysToRead.Enqueue(TestHelpers.ConsoleKeyInfoFromChar('1')); consoleStub.KeysToRead.Enqueue(TestHelpers.ConsoleKeyInfoFromChar(',')); consoleStub.KeysToRead.Enqueue(TestHelpers.ConsoleKeyInfoFromChar('2')); var newLineKey = new ConsoleKeyInfo('\n', ConsoleKey.Enter, false, false, false); consoleStub.KeysToRead.Enqueue(newLineKey); consoleStub.KeysToRead.Enqueue(TestHelpers.ConsoleKeyInfoFromChar('3')); consoleStub.KeysToRead.Enqueue(consoleStub.EnterKey); string expectedInputString = "1,2\n3"; var calcManager = new CalculatorManager(calcMock.Object, consoleStub); calcManager.Execute(); calcMock.Verify(x => x.Calculate(expectedInputString), Times.Once()); }
private void Start() { calcManager = GetComponentInParent <CalculatorManager>(); }
public void CalculatirManager() { var calculatorManager = new CalculatorManager(); Assert.AreEqual(calculatorManager.CalculateLoan(200, 10), 260.92); }
public void Setup() { calculator = new CalculatorManager(); }
static void Main(string[] args) { CalculatorManager bllCalculate = new CalculatorManager(); string oneAdd; string oneSub; string oneMul; string oneDivid; string oneRemainder; Console.WriteLine("Welcome to Malkavian's calculator!\nIf problem occurs during use, please call QQ:635109543"); string one1; string calculateContinue; do { Console.WriteLine("进行历史查询输入s最新10条,如不需要请回车"); string history = Console.ReadLine(); if (isS(history)) { DataTable ds = bllCalculate.GetAllHistory(); for (var j = 0; j < ds.Rows.Count; j++) { Console.Write("\0\0\0{0}{1}\0{2}\n运算结果:{3}\n", ds.Rows[j][0].ToString().Trim(), ds.Rows[j][2].ToString().Trim(), ds.Rows[j][1].ToString().Trim(), ds.Rows[j][3].ToString().Trim()); //for (int i = 0; i < ds.Columns.Count; i++) //{ //} } } Console.WriteLine("请输入一个数进行计算:"); do { one1 = Console.ReadLine(); Console.WriteLine("字符数{0}", one1.Length);/*.Length获取字符个数从1开始数.*/ }while (!isNumeric(one1) || !islenth(one1)); decimal one2 = Convert.ToDecimal(one1); Console.WriteLine("你输入的数字为:{0}", one2); Console.WriteLine("请输入进行的运算:+ - * / %"); string choice; do { choice = Console.ReadLine(); }while (!isSym(choice)); switch (choice) { case "+": Console.WriteLine("请再输入一个数:"); do { oneAdd = Console.ReadLine(); }while (!isNumeric(oneAdd) || !islenth(oneAdd)); decimal twoAdd = Convert.ToDecimal(oneAdd); decimal sum = one2 + twoAdd; Console.WriteLine("{0}{1}{2}=\n{3}", one1, choice, oneAdd, sum); if (bllCalculate.ADDResult(one1, oneAdd, choice, sum.ToString()) > 0) { Console.WriteLine("数据进入SQL添加成功"); } break; case "-": Console.WriteLine("请再输入一个数:"); do { oneSub = Console.ReadLine(); }while (!isNumeric(oneSub) || !islenth(oneSub)); decimal twoSub = Convert.ToDecimal(oneSub); decimal sub = one2 - twoSub; Console.WriteLine("{0}{1}{2}=\n{3}", one1, choice, oneSub, sub); if (bllCalculate.ADDResult(one1, oneSub, choice, sub.ToString()) > 0) { Console.WriteLine("数据进入SQL添加成功"); } break; case "*": Console.WriteLine("请再输入一个数:"); do { oneMul = Console.ReadLine(); }while (!isNumeric(oneMul) || !islenth(oneMul)); decimal twoMul = Convert.ToDecimal(oneMul); decimal Mul = one2 * twoMul; Console.WriteLine("{0}{1}{2}=\n{3}", one1, choice, oneMul, Mul); if (bllCalculate.ADDResult(one1, oneMul, choice, Mul.ToString()) > 0) { Console.WriteLine("数据进入SQL添加成功"); } break; case "/": Console.WriteLine("请再输入一个数:"); do { oneDivid = Console.ReadLine(); }while (!isNumeric(oneDivid) || !isZero(oneDivid) || !islenth(oneDivid)); decimal twoDivid = Convert.ToDecimal(oneDivid); if (twoDivid == 0) { Console.WriteLine("警告:除数不能为0!!"); } else { decimal Divid = one2 / twoDivid; Console.WriteLine("{0}{1}{2}=\n{3}", one1, choice, oneDivid, Divid); if (bllCalculate.ADDResult(one1, oneDivid, choice, Divid.ToString()) > 0) { Console.WriteLine("数据进入SQL添加成功"); } } break; case "%": Console.WriteLine("请再输入一个数:"); do { oneRemainder = Console.ReadLine(); }while (!isNumeric(oneRemainder) || !isZero(oneRemainder) || !islenth(oneRemainder)); decimal twoRemainder = Convert.ToDecimal(oneRemainder); if (twoRemainder == 0) { Console.WriteLine("警告:对0取余!!"); } else { decimal Remainder = one2 % twoRemainder; Console.WriteLine("{0}{1}{2} 的余数为\n{3}", one1, choice, oneRemainder, Remainder); if (bllCalculate.ADDResult(one1, oneRemainder, choice, Remainder.ToString()) > 0) { Console.WriteLine("数据进入SQL添加成功"); } } break; default: Console.WriteLine("输入格式错误!请检查"); break; } Console.WriteLine("输入q退出"); calculateContinue = Console.ReadLine(); }while (isCalculteContinu(calculateContinue)); Console.WriteLine("谢谢使用!"); }
//normalde AutoFixture olmasaydı (SUT) CalculatorManager yukarıda constructor da tanımlanacaktı. Yukarıda örneği mevcut public void MaxInt_Degerinden_Negative_Rakam_cikartildiginda_Hata_Patlamalidir(int number, CalculatorManager calculatorManager) { Action action = () => calculatorManager.SubtractFromMaxInt(number); //FluentAssertion action.Should().Throw <OverflowException>(); }
public static void Main(string[] args) { CalculatorManager _manager = CalculatorManager.Instance; _manager.ShowMenu(); }
private void Button_Click(object sender, RoutedEventArgs e) { var Calc = new CalculatorManager(); var inputCode = CodeTextBox.Text; var lines = inputCode.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); var names = new List <string>(); var additionCode = ""; int idx = -1; for (int i = 0; i < lines.Length; i++) { var regex = Regex.Match(lines[i], "^\\s*>\\s*(.*?)\\s*="); if (regex.Success) { names.Add($"{Regex.Replace(regex.Groups[1].Value, "[[][]]\\s+", "")}"); idx++; additionCode += "\n" + $"Calc.AddNewValue({names[idx]});"; } } inputCode = Regex.Replace(inputCode, "out:", "Calc.StringAdd:"); var worker = new CodeWorker(inputCode + "\n"); worker.AddNewRule("^\\s*>", "double"); worker.AddNewRule("//.*?$", ""); worker.AddNewRule("while ", "while ("); worker.AddNewRule("for ", "for ("); worker.AddNewRule("if ", "if ("); worker.AddNewRule(":\\s*$", ") {"); worker.AddNewRule(";\\s*$", "}"); worker.AddNewRule("exit|quit|stop", "goto end"); worker.AddNewRule("for [(]\\s*", "for (int "); foreach (Match m in Regex.Matches(inputCode, "^.*?([<].*?[>]).*?$", RegexOptions.Multiline)) { var arrayItems = m.Groups[1].Value; worker.AddNewRule(new ArrayQuotesWorker() { InputString = arrayItems }); } foreach (Match m in Regex.Matches(inputCode, "^\\s*(Calc.StringAdd:.*?)\\s*.\\s*$", RegexOptions.Multiline)) { var outItems = m.Groups[1].Value; worker.AddNewRule(new OutFunctionWorker() { InputString = outItems }); } worker.AddNewRule("\n+", ";\n"); worker.AddNewRule("{;", "{"); worker.AddNewRule("};", ";}"); worker.ProcessString(); inputCode = worker.WorkingString; inputCode = Regex.Replace(inputCode, "[)][.]|[.][)]", ")"); inputCode = Regex.Replace(inputCode, "[)]\\s*}", ");}"); inputCode = Regex.Replace(inputCode, "\\s*}", ";}"); inputCode = $"Calc.Value = 1; {Calc.CorrectedExpression(inputCode)}" + additionCode; try { using (var sandBox = new Sandbox()) { var d = CodeGenerator.CreateCode <double> (sandBox, CS.Compiler, inputCode, null, null, CodeParameter.Create("Calc", Calc )); d.Execute(Calc); } OutputTextBox.Text = Calc.StringValue; var values = Calc.Values; for (int i = 0; i < names.Count; i++) { Calc.AddVariable(names[i], values[i]); } Vars.ItemsSource = Calc.Variables; } catch { MessageBox.Show(inputCode); } }
public CalculatorServices() { _calculatorManager = new CalculatorManager(); }
static void Main(string[] args) { var calcManager = new CalculatorManager(new Calculator(new InputParser()), new ConsoleWrapper()); calcManager.Execute(); }
public MainWindow() { InitializeComponent(); FillOperationsComboBoxWithSymbols(); calcManager = new CalculatorManager(); }
public void AddTest() { CalculatorManager cm = new CalculatorManager(); // null check try { cm.Add(null); Assert.Fail("FAIL: NULL value not handled properly."); } catch (ArgumentException) { // Pass... should throw an ArgumentException } catch { Assert.Fail("FAIL: NULL value not handled properly."); } // Requirement 1: Support two numbers Assert.AreEqual(cm.Add(""), 0); // test for empty string Assert.AreEqual(cm.Add("20"), 20); Assert.AreEqual(cm.Add("1,500"), 501); // test two numbers Assert.AreEqual(cm.Add("5,tytyt"), 5); Assert.AreEqual(cm.Add("5.2,5"), 5); // test that decimals don't break anything // Assert.AreEqual(cm.Add("5,2,3"), 7); // three or more values not allowed (REMOVED for Requirement 2) // Requirement 2: Support unlimited numbers Assert.AreEqual(cm.Add("1,2,3,4,5,6,7,8,9,10,11,12"), 78); // Requirement 3: Support a newline character as an alternative delimiter Assert.AreEqual(cm.Add("1\n2,3"), 6); Assert.AreEqual(cm.Add("1\n2,3\n5"), 11); CalculatorManager cmNeg = new CalculatorManager(false); // For Requirement 3b // Requirement 4: Deny negative numbers try { // Requirement 3b: Toggle whether to deny negative numbers Assert.AreEqual(cmNeg.Add("-5,-2,-3"), -10); cm.Add("-5,-2,-3"); Assert.Fail("FAIL: Negative values not handled properly."); } catch (ArgumentException) { // Pass... should throw an ArgumentException } catch { Assert.Fail("FAIL: Negative values not handled properly."); } // Requirement 5: Ignore any number greater than 1000 Assert.AreEqual(cm.Add("2,1001,6"), 8); // Requirement 6: Support 1 custom single character length delimiter Assert.AreEqual(cm.Add("//;\n2;5"), 7); // Requirement 7: Support 1 custom delimiter of any length Assert.AreEqual(cm.Add("//[***]\n11***22***33"), 66); // Requirement 8: Support 1 custom delimiter of any length Assert.AreEqual(cm.Add("//[*][!!][r9r]\n11r9r22*33!!44"), 110); // TODO: Add more test cases for each requirement }