Initial commit: Complete TDD workshop materials
- Workshop documentation (WORKSHOP_PLAN, FACILITATOR_GUIDE, etc.) - FizzBuzz kata with demo script (git history to be recreated) - Password Validator kata with demo script and solution - Shopping Cart kata with demo script and solution - Setup guide and TDD reference card for participants
This commit is contained in:
commit
c3355063f2
26 changed files with 4725 additions and 0 deletions
56
fizzbuzz/README.md
Normal file
56
fizzbuzz/README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# FizzBuzz Kata - Live Demo
|
||||
|
||||
## Purpose
|
||||
|
||||
This kata is designed for **live demonstration** during the TDD workshop introduction. It shows the RED-GREEN-REFACTOR cycle in a familiar problem that requires minimal explanation.
|
||||
|
||||
## The Rules
|
||||
|
||||
Write a function that converts numbers to strings according to these rules:
|
||||
|
||||
- Numbers divisible by 3 → `"Fizz"`
|
||||
- Numbers divisible by 5 → `"Buzz"`
|
||||
- Numbers divisible by both 3 and 5 → `"FizzBuzz"`
|
||||
- All other numbers → the number as a string (e.g., `"1"`, `"2"`)
|
||||
|
||||
## Git History as Teaching Tool
|
||||
|
||||
This kata is built with **12 commits** showing each step of the TDD cycle:
|
||||
|
||||
```bash
|
||||
git log --oneline --all
|
||||
```
|
||||
|
||||
Each commit shows either:
|
||||
- **RED**: A failing test
|
||||
- **GREEN**: Minimal code to pass
|
||||
- **REFACTOR**: Code cleanup (if needed)
|
||||
|
||||
## Using This for the Demo
|
||||
|
||||
See `DEMO_SCRIPT.md` for detailed talking points and timing guide.
|
||||
|
||||
## Running the Tests
|
||||
|
||||
```bash
|
||||
dart pub get
|
||||
dart test
|
||||
```
|
||||
|
||||
## Checking Out Individual Steps
|
||||
|
||||
To see the code at any point:
|
||||
|
||||
```bash
|
||||
git log --oneline # See all commits
|
||||
git checkout <commit-hash> # Jump to that step
|
||||
git checkout main # Return to final solution
|
||||
```
|
||||
|
||||
## The "Aha!" Moment
|
||||
|
||||
Notice how the simple tests (1, 2) led to a general solution (n.toString()), and the Fizz/Buzz tests forced the algorithm to emerge naturally. **We never designed the whole solution upfront—the tests revealed it step by step.**
|
||||
|
||||
## For Facilitators
|
||||
|
||||
This is your warm-up kata. Practice it a few times before the workshop so you can live-code it smoothly while talking through your thinking process.
|
||||
Loading…
Add table
Add a link
Reference in a new issue