The following is a TDD + BLoC Kata.
This classic kata guides you step by step through the implementation of a calculator that receives a String as input. It is a good exercise on refactoring and incremental implementation. It is also a good candidate for practising TDD.
Create a function add that takes a String and returns a String:
String add(String number)
- The method can take 0, 1 or 2 numbers separated by comma, and returns their sum.
- An empty string will return “0”.
- Example of inputs: "", "1", "1.1,2.2".
Allow the add method to handle an unknow number of arguments.
Allow the add method to handle newlines as separators:
- "1\n2,3" should return "6".
- "175.2,\n35" is invalid and should return the message "Number expected but '\n' found at position 6."
Don’t allow the input to end in a separator.
- "1,3," is invalid and should return the message Number expected but EOF found.
Allow the add method to handle a different delimiter. To change the delimiter, the beginning of the input will contain a separate line that looks like this:
//[delimiter]\n[numbers]
- "//;\n1;2" should return "3"
- "//|\n1|2|3" should return "6"
- "//sep\n2sep3" should return "5"
- "//|\n1|2,3" is invalid and should return the message "'|' expected but ',' found at position 3."
All existing scenarios should work as before.
Calling add with negative numbers will return the message "Negative not allowed : " listing all negative numbers that were in the list of numbers.
- "-1,2" is invalid and should return the message "Negative not allowed : -1"
- "2,-4,-5" is invalid and should return the message "Negative not allowed : -4, -5"
Calling add with multiple errors will return all error messages separated by newlines.
- "-1,,2" is invalid and return the message "Negative not allowed : -1\nNumber expected but ',' found at position 3."
Introduce an internal add function returning a number instead of a String, and test many solutions for the error messages. - Exception - maybe and monad approch - POSIX return code with message managemement - tuple with error struct like in Go - etc.
Write a function for multiply with same rules
Create a Widget that contains an input text field. This Widget will add an Event to the Stream when pressing ENTER.
When our new event is created, call the function add and get the result and print it through console.
Create a new Widget that will print the result of the function add.
Tell the user what happened in case an error was found.
First, build a basic Dialog that just contains text. Then, add an Accept button to be able to close it.
Add a BACK button that takes you from the final State to the Initial State
In order to do this, you should check WillPopScope widget and its parameter onWillPop.
In the input State, let the user to choose the operation to be calculated.
Let the user know that he needs to insert the factors to calculate with. A good way to achieve this is by implementing a SnackBar.