public void PostfixEvaluatorTest() { // 3 + 4 * 5 = 23 var queue = ShuntingYardAlgorithm.ShuntingYard("3+4*5"); PostfixEvaluator.EvaluatePostfix(queue).Should().Be(23); // 3 * (4 + 5) = 27 queue = ShuntingYardAlgorithm.ShuntingYard("3*(4+5)"); PostfixEvaluator.EvaluatePostfix(queue).Should().Be(27); }
public void InfixToPostfixTest() { var queue = ShuntingYardAlgorithm.ShuntingYard("3+2*4/5"); queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('2'); queue.Dequeue().Should().Be('4'); queue.Dequeue().Should().Be('*'); queue.Dequeue().Should().Be('5'); queue.Dequeue().Should().Be('/'); queue.Dequeue().Should().Be('+'); queue = ShuntingYardAlgorithm.ShuntingYard("3+4*5"); queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('4'); queue.Dequeue().Should().Be('5'); queue.Dequeue().Should().Be('*'); queue.Dequeue().Should().Be('+'); queue = ShuntingYardAlgorithm.ShuntingYard("3*(4+5)"); queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('4'); queue.Dequeue().Should().Be('5'); queue.Dequeue().Should().Be('+'); queue.Dequeue().Should().Be('*'); queue = ShuntingYardAlgorithm.ShuntingYard("3+4*2/(1-5)^2^3"); // 3 4 2 × 1 5 − 2 3 ^ ^ ÷ + queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('4'); queue.Dequeue().Should().Be('2'); queue.Dequeue().Should().Be('*'); queue.Dequeue().Should().Be('1'); queue.Dequeue().Should().Be('5'); queue.Dequeue().Should().Be('-'); queue.Dequeue().Should().Be('2'); queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('^'); queue.Dequeue().Should().Be('^'); queue.Dequeue().Should().Be('/'); queue.Dequeue().Should().Be('+'); queue = ShuntingYardAlgorithm.ShuntingYard("3-2+1"); queue.Dequeue().Should().Be('3'); queue.Dequeue().Should().Be('2'); queue.Dequeue().Should().Be('-'); queue.Dequeue().Should().Be('1'); queue.Dequeue().Should().Be('+'); }