Skip to content

The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes .

Notifications You must be signed in to change notification settings

vaibhav0000patel/TDD-Kata-StringCalculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TDD-Kata-StringCalculator

The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes .

String Calculator

Create a simple String calculator with a method signature:

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

int Add(string numbers)

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

The method can take up to two numbers, separated by commas, and will return their sum.

for example β€œβ€ or β€œ1” or β€œ1,2” as inputs.

(for an empty string it will return 0)

Hints:

β€”β€”β€”β€”β€”β€”

  • Start with the simplest test case of an empty string and move to one and two numbers
  • Remember to solve things as simply as possible so that you force yourself to write tests you did not think about
  • Remember to refactor after each passing test

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Allow the Add method to handle an unknown amount of numbers

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Allow the Add method to handle new lines between numbers (instead of commas).

the following input is ok: β€œ1\n2,3” (will equal 6)

the following input is NOT ok: β€œ1,\n” (not need to prove it - just clarifying)

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”-

Support different delimiters

to change a delimiter, the beginning of the string will contain a separate line that looks like this: β€œ//[delimiter]\n[numbers…]” for example β€œ//;\n1;2” should return three where the default delimiter is β€˜;’ .

the first line is optional. all existing scenarios should still be supported

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Calling Add with a negative number will throw an exception β€œnegatives not allowed” - and the negative that was passed.

if there are multiple negatives, show all of them in the exception message.

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

STOP HERE if you are a beginner. Continue if you can finish the steps so far in less than 30 minutes.

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Numbers bigger than 1000 should be ignored, so adding 2 + 1001 = 2

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Delimiters can be of any length with the following format: β€œ//[delimiter]\n” for example: β€œ//[]\n12***3” should return 6

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Allow multiple delimiters like this: β€œ//[delim1][delim2]\n” for example β€œ//[][%]\n12%3” should return 6.

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

make sure you can also handle multiple delimiters with length longer than one char

About

The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes .

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages