public void Calculate_IncorrectExpressionTest() { //Arrange var stringTokens = "2 + _2".Split(); TokenCollection tokens = new TokenCollection(); //Act tokens.AddMany(stringTokens); //Assert Assert.ThrowsException <NotImplementedException>(() => tokens.CreateRPN()); }
public void Calculate_WithoutRPN_ReturnExceptionTest() { //Arrange var stringTokens = "2 + 2".Split(); TokenCollection tokens = new TokenCollection(); List <ServerFormula> formulas = new List <ServerFormula>(); //Act tokens.AddMany(stringTokens); //Assert Assert.ThrowsException <InvalidOperationException>(() => tokens.Calculate(formulas)); }
private static TokenCollection GetTokens(string exp) { var fplist = exp.Replace("(", " ( ").Replace(")", " ) "); var stringTokens = Operator.GetAll .Aggregate(fplist, (list, op) => list.Replace(op.Name, $" {op.Name} ")) .Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); var tokens = new TokenCollection(); tokens.AddMany(stringTokens); return(tokens); }
public void Calculate_DivideByZeroTest() { //Arrange var stringTokens = "2 / 0".Split(); TokenCollection tokens = new TokenCollection(); List <ServerFormula> formulas = new List <ServerFormula>(); //Act tokens.AddMany(stringTokens); tokens.CreateRPN(); //Assert Assert.ThrowsException <DivideByZeroException>(() => tokens.Calculate(formulas)); }
public void AddMany_ManyIsNotValidTest() { //Arrange var stringTokens = "( 2 + 3)/ 10".Split(); TokenCollection tokens = new TokenCollection(); const int summaryTokenCount = 5; const int brokenTokensCount = 1; //Act tokens.AddMany(stringTokens); //Assert Assert.AreEqual(summaryTokenCount, tokens.Count); Assert.AreEqual(brokenTokensCount, tokens.Where(token => token is UnknownToken).Count()); }
public void CalcuateTest(string expression, double expectedResult) { //Arrange var stringTokens = expression.Split(); TokenCollection tokens = new TokenCollection(); List <ServerFormula> formulas = new List <ServerFormula>(); //Act tokens.AddMany(stringTokens); tokens.CreateRPN(); var result = tokens.Calculate(formulas); //Assert Assert.AreEqual(expectedResult, result, 0.01); }
public void Calcuate_WithIncorrectListOfFormulaTest() { //Arrange var stringTokens = "2 + a * c".Split(); TokenCollection tokens = new TokenCollection(); List <ServerFormula> formulas = new List <ServerFormula>() { new ServerFormula { Name = "a", Value = 13 } }; //Act tokens.AddMany(stringTokens); tokens.CreateRPN(); //Assert Assert.ThrowsException <ArgumentException>(() => tokens.Calculate(formulas)); }
public TokenCollection ConstructTokens(string exp) { if (string.IsNullOrEmpty(exp)) { logger.Error("Значение формулы было неопределенным"); return(null); } var fplist = exp.Replace("(", " ( ").Replace(")", " ) ").Replace(".", ","); var stringTokens = Operator.GetAll .Aggregate(fplist, (list, op) => list.Replace(op.Name, $" {op.Name} ")) .Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); Tokens = new TokenCollection(); Tokens.AddMany(stringTokens); return(Tokens); }
public void Calcuate_WithCorrectListOfFormulaTest() { //Arrange var stringTokens = "2 + a * 10".Split(); TokenCollection tokens = new TokenCollection(); List <ServerFormula> formulas = new List <ServerFormula>() { new ServerFormula { Name = "a", Value = 13 } }; //Act tokens.AddMany(stringTokens); tokens.CreateRPN(); var result = tokens.Calculate(formulas); //Assert Assert.AreEqual(132, result, 0.01); }