Prove the suite detects a real wrong change
See this course’s project requirements
A before/after fictional fee calculator split into pure functions with an executable equivalence suite, clearer names and documented intentional nonchanges.
Keep your working files in your own notebook or software. Save a private description, checklist, and work link in My Proof.
What to include
- Produce a complete valid/rejected behavior contract and intentional-change boundary.
- Retain full finite valid-space coverage and explicitly scoped invalid-case comparisons.
- Create checked validation/subtotal helpers and preserve the public entry contract.
- Produce a domain-name/reference review with unchanged discount and delivery semantics.
- Retain a passing baseline and an expected failing price mutation without altering final pricing.
- Deliver an independently reasoned, repeatable refactor with finite coverage and selected-invalid limits.
Review and revise
Use these criteria to check your work and choose what to improve.
- The implementation or declared simulation follows the supplied contract and retains inspectable original inputs.
- Normal, boundary and rejected cases are recorded with expected versus observed results.
- The changed case has a correct explanation and does not rely on hidden state.
- The project includes source, outputs, instructions and honest tool, privacy and verification limits.
Want more background?
The idea in everyday life
Fictional workshop kits: quantity 1–20, $3 per kit, a 20% member discount on kit subtotal, and $2.50 only for post. Calculations return integer cents. legacy_fee.py and refactored_fee.py must agree on permitted and rejected requests.
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
Prove the suite detects a real wrong change — original worked practice
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
Fictional workshop kits: quantity 1–20, $3 per kit, a 20% member discount on kit subtotal, and $2.50 only for post. Calculations return integer cents. legacy_fee.py and refactored_fee.py must agree on permitted and rejected requests.
1. Step 1
Read test-refactor-repair.py: it first runs the unchanged equivalence suite.
You should see: The baseline must pass before the mutation check.
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
2. Step 2
Inspect its temporary-copy change UNIT_CENTS=300→301.
You should see: The mutation changes a price while leaving valid Python syntax.
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
3. Step 3
Run python3 test-refactor-repair.py and inspect the expected nonzero mutated run captured by the wrapper.
You should see: The changed-price mutation produces an AssertionError.
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
4. Step 4
Keep the unchanged source as final and retain the pass/fail/repair evidence.
You should see: A verified detection cycle using a temporary copy.
A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax.
What to finish
Retain a passing baseline and an expected failing price mutation without altering final pricing.
Watch for this
Treating a syntax error as evidence that pricing assertions detect a real semantic regression.
How can I tell I understand it?
Demonstrate the rule: A green suite is stronger when a deliberate bounded mutation produces the expected failure. The mutation must alter behavior, not merely break syntax. Use the supplied variant to distinguish a changed result from a broken implementation.
Quick knowledge check
Answer all 3 questions. Get at least 2 right and the lesson completes automatically.
You’ll get an explanation for each answer. Signed in? Your results save to your account.
Pass the check. We’ll save the progress.
Answer all 3 questions above and get at least 2 right. You can review the explanations and try again.
Go to the knowledge checkTools, templates, and lesson sources
Tools and templates
Tools open in a new tab so you can keep your place here.
Sources and further reading
Explore the references behind this lesson.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Report a problem with this lesson
Tell us what went wrong. Please leave out personal information and private project contents.