SlideShare a Scribd company logo
OCP Supemarket Checkout Kata
Using the OCP rules, write a supermarket checkout controller,
using the following test template:
public class CheckoutTester {
private int price(String... items) {
Checkout checkout = new CheckoutFactory().create();
for (String item : items)
checkout.scan(item);
return checkout.total();
}
@Test
public void emptyBasket() {
assertEquals(0, price(""));
}
}
OCP Supemarket Checkout Kata
An empty basket has a zero price:
@Test
public void emptyBasket() {
assertEquals(0, price(""));
}
A single item has a constant price:
@Test
public void singleItem() {
assertEquals(50, price("A"));
assertEquals(30, price("B"));
assertEquals(20, price("C"));
assertEquals(15, price("D"));
}
Special offers
3 As get a 20p discount:
AA → 100
AAA → 130
AAAA → 180
etc...
2 Bs get a 15p discount:
BB → 45
ABABA → 175
ACABDB → 180
etc...
A starter (A), a main (B) and either pudding (C,D) for 85:
BDA → 85
AADC → 135
AABCA → 180
etc...
OCP Supemarket Checkout Kata
The original problem is here:
http://codekata.pragprog.com/2007/01/kata_nine_back_.html

More Related Content

PPT
Oracle PLSql 4
PPT
Supermarket
PDF
Making the most of autism
ODP
Evolving the Kanban Board
ODP
Don't forget the developers!
ODP
Love and death
ODP
Connascence hunting
ODP
The 5-day challenge
Oracle PLSql 4
Supermarket
Making the most of autism
Evolving the Kanban Board
Don't forget the developers!
Love and death
Connascence hunting
The 5-day challenge

More from Kevin Rutherford (16)

ODP
Red, green, ... what now?!
ODP
Pair programming
PDF
Tdd is dead
PDF
PDF
Shepherding antipatterns
ODP
Kata rules
ODP
Movie app kata
ODP
Object discovery
ODP
Connascence
ODP
OCP bowling kata
ODP
OCP String Calculator kata
ODP
OCP kata overview
ODP
Telling not-asking
ODP
Agile principles
Red, green, ... what now?!
Pair programming
Tdd is dead
Shepherding antipatterns
Kata rules
Movie app kata
Object discovery
Connascence
OCP bowling kata
OCP String Calculator kata
OCP kata overview
Telling not-asking
Agile principles
Ad

OCP Checkout kata

  • 1. OCP Supemarket Checkout Kata Using the OCP rules, write a supermarket checkout controller, using the following test template: public class CheckoutTester { private int price(String... items) { Checkout checkout = new CheckoutFactory().create(); for (String item : items) checkout.scan(item); return checkout.total(); } @Test public void emptyBasket() { assertEquals(0, price("")); } }
  • 2. OCP Supemarket Checkout Kata An empty basket has a zero price: @Test public void emptyBasket() { assertEquals(0, price("")); } A single item has a constant price: @Test public void singleItem() { assertEquals(50, price("A")); assertEquals(30, price("B")); assertEquals(20, price("C")); assertEquals(15, price("D")); }
  • 3. Special offers 3 As get a 20p discount: AA → 100 AAA → 130 AAAA → 180 etc... 2 Bs get a 15p discount: BB → 45 ABABA → 175 ACABDB → 180 etc... A starter (A), a main (B) and either pudding (C,D) for 85: BDA → 85 AADC → 135 AABCA → 180 etc...
  • 4. OCP Supemarket Checkout Kata The original problem is here: http://codekata.pragprog.com/2007/01/kata_nine_back_.html