Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Karumi Dojo
Pedro Vicente Gómez Sánchez
Senior Android Developer at Karumi
pedro@karumi.com
@pedro_g_s
github.com/pedrovgs
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Irene Herranz
Managing Director
Alberto Gragera
Technical Director
Jorge Barroso
Android Expert
Davide Mendolia
Full Stack Engineer
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Karumi Dojo
● We are here to practice and learn.
● This is a bullshit free environment.
● This exercise meant to be collaborative, not
competitive.
● Try to open your mind to new concepts.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Karumi Dojo
● We are here to practice Test-Driven Development.
● TDD is a software development process, not a dogma.
● We are going to practice pair programming.
● Keep always in mind the TDD Cycle.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Rules:
● Write enough test code so that to get a single test
failure.
● Write enough production code to get all your tests to
pass.
● Refactor until the code is Simple/Clean.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Rules: The TDD Cycle
RED
GREEN
REFACTO
R
3. Simplify and clean
your code.
1. Write a failing test.
2. Make the code work.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Sum the number inside string passed as parameter: 1,2,3 = 6
String Calculator
public int add(String numbers) {
//Put your code here
}
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Business Rule 1
The method can take 0, 1 or 2 numbers,
and will return their sum (for an empty
string it will return 0) for example “” or “1”
or “1,2”.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Business Rule 2
Allow the Add method to handle an
unknown amount of numbers.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Business Rule 3
Allow the Add method to handle new lines
between numbers (instead of commas).
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Business Rule 4
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
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Rule 5
If the delimiter used is not “,” or “n”
throw an exception.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Tips
● Baby steps.
● Don’t lose the green.
● Choose the language you prefer.
● Refactor your code.
● Build errors are not failing tests.
● Follow the TDD Cycle.
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
http://goo.gl/erofJ5
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Extra points
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Extra Rule 1
Numbers bigger than 1000 should be
ignored, so adding 2 + 1001 = 2
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Extra Rule 2
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
Pedro V. Gómez Sánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
Extra Rule 3
Allow multiple delimiters like this:
“//[delim1][delim2]n” for example “//[*][%]
n1*2%3” should return 6.

Karumi Dojo - String Calculator Kata

  • 1.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Karumi Dojo Pedro Vicente Gómez Sánchez Senior Android Developer at Karumi pedro@karumi.com @pedro_g_s github.com/pedrovgs
  • 2.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
  • 3.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Irene Herranz Managing Director Alberto Gragera Technical Director Jorge Barroso Android Expert Davide Mendolia Full Stack Engineer
  • 4.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs
  • 5.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Karumi Dojo ● We are here to practice and learn. ● This is a bullshit free environment. ● This exercise meant to be collaborative, not competitive. ● Try to open your mind to new concepts.
  • 6.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Karumi Dojo ● We are here to practice Test-Driven Development. ● TDD is a software development process, not a dogma. ● We are going to practice pair programming. ● Keep always in mind the TDD Cycle.
  • 7.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Rules: ● Write enough test code so that to get a single test failure. ● Write enough production code to get all your tests to pass. ● Refactor until the code is Simple/Clean.
  • 8.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Rules: The TDD Cycle RED GREEN REFACTO R 3. Simplify and clean your code. 1. Write a failing test. 2. Make the code work.
  • 9.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Sum the number inside string passed as parameter: 1,2,3 = 6 String Calculator public int add(String numbers) { //Put your code here }
  • 10.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Business Rule 1 The method can take 0, 1 or 2 numbers, and will return their sum (for an empty string it will return 0) for example “” or “1” or “1,2”.
  • 11.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Business Rule 2 Allow the Add method to handle an unknown amount of numbers.
  • 12.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Business Rule 3 Allow the Add method to handle new lines between numbers (instead of commas).
  • 13.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Business Rule 4 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
  • 14.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Rule 5 If the delimiter used is not “,” or “n” throw an exception.
  • 15.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Tips ● Baby steps. ● Don’t lose the green. ● Choose the language you prefer. ● Refactor your code. ● Build errors are not failing tests. ● Follow the TDD Cycle.
  • 16.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs http://goo.gl/erofJ5
  • 17.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Extra points
  • 18.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Extra Rule 1 Numbers bigger than 1000 should be ignored, so adding 2 + 1001 = 2
  • 19.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Extra Rule 2 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
  • 20.
    Pedro V. GómezSánchez - pedro@karumi.com - @pedro_g_s - github.com/pedrovgs Extra Rule 3 Allow multiple delimiters like this: “//[delim1][delim2]n” for example “//[*][%] n1*2%3” should return 6.