Arithmetic Expressions Calculator
Create a program to calculate arithmetic expressions using TDD approach.
- Unit Testing
- Testing tools
Create a programm to calculate arithmetic expression that is provided as string. It should have the following functionality:
- Arithmetic expression parser. That takes expression string written in infix notation as an input and converts it to Reverse Polish Notation.
const expression = "2 * ( 3 + 6 / 2 ) / 4" convertToRPN(expression) // "2 3 6 2 / + * 4 /"
- Reverse Polish Notation calculator. It takes expression string written in RPN as an input and calculates it respecting priority.
const expression = "2 3 6 2 / + * 4 /" calculateRPNExpression(expression) // 3
The following arthmetic operations are allowed:
+, -, *, /. It shoud work with positive numbers. Invalid expressions should cause error.
Both modules should validate parameters and cause custom errors if necessary.
- Every input string has numbers, operators and parentheses separated by space
- Accept only strings as parameters (TypeError)
- Check expression for the correctness(invalid parentheses, double operators, restricted simbols) (BadSequenceError)
0 / 0should have triggered an exception, not given result
Must be used TDD approach, which means that every test must be written before implementing the functionality.
Please use the following flow:
- Write tests
- Run tests
- Make tests pass
- Repeat from 1
- Use reporter tools to achive 100% code coverage.
- Publish modules to npm.
- Write documentation for each module.
- Update program to evaluate expressions from console or file line by line using
node index.js < expressions.txt.
// expressions.txt 5 + 8 * 3 / 2 (5 + 8) * 3 / 2 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 //... ```