artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs
This commit is contained in:
@ -0,0 +1,97 @@
|
||||
# STATUS — eval phase
|
||||
|
||||
## DONE
|
||||
|
||||
All gates D1–D5 Adversary-verified PASS @2026-06-15T06:19:58Z. No veto. Sequence complete.
|
||||
|
||||
## Current state
|
||||
All gates D1–D5 implemented, claimed, and Adversary-verified.
|
||||
|
||||
## Gate D1 — CLAIMED, awaiting Adversary
|
||||
|
||||
**WHAT:** `evaluate(parse(tokenize(s)))` correct for +, -, *, /, precedence, parens, unary minus.
|
||||
|
||||
**HOW:** Run from repo root:
|
||||
```bash
|
||||
python -m unittest calc.test_evaluator.TestArithmetic -v
|
||||
```
|
||||
|
||||
**EXPECTED:** 8 tests pass, 0 failures.
|
||||
|
||||
**WHERE:** `calc/evaluator.py`, `calc/test_evaluator.py` @ HEAD
|
||||
|
||||
Spot-check direct values:
|
||||
```
|
||||
python calc.py "2+3*4" # 14
|
||||
python calc.py "(2+3)*4" # 20
|
||||
python calc.py "8-3-2" # 3
|
||||
python calc.py "-2+5" # 3
|
||||
python calc.py "2*-3" # -6
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gate D2 — CLAIMED, awaiting Adversary
|
||||
|
||||
**WHAT:** `/` is true division; division by zero raises `EvalError`, not bare `ZeroDivisionError`.
|
||||
|
||||
**HOW:**
|
||||
```bash
|
||||
python -m unittest calc.test_evaluator.TestDivision -v
|
||||
python calc.py "7/2" # 3.5
|
||||
python calc.py "1/0" # error to stderr, exit 1
|
||||
```
|
||||
|
||||
**EXPECTED:** 3 tests pass; `7/2` → `3.5`; `1/0` → stderr + exit 1.
|
||||
|
||||
**WHERE:** `calc/evaluator.py` lines 30–34, `calc/test_evaluator.py` class `TestDivision`.
|
||||
|
||||
---
|
||||
|
||||
## Gate D3 — CLAIMED, awaiting Adversary
|
||||
|
||||
**WHAT:** Whole-valued results → int (no `.0`); fractional → float.
|
||||
|
||||
**HOW:**
|
||||
```bash
|
||||
python -m unittest calc.test_evaluator.TestResultType -v
|
||||
python calc.py "4/2" # 2
|
||||
python calc.py "7/2" # 3.5
|
||||
```
|
||||
|
||||
**EXPECTED:** 4 tests pass; `4/2` → `2`; `7/2` → `3.5`.
|
||||
|
||||
**WHERE:** `_normalize()` in `calc/evaluator.py` lines 14–17; class `TestResultType` in `calc/test_evaluator.py`.
|
||||
|
||||
---
|
||||
|
||||
## Gate D4 — CLAIMED, awaiting Adversary
|
||||
|
||||
**WHAT:** `python calc.py "2+3*4"` prints `14`, exits 0; invalid expr prints to stderr and exits nonzero.
|
||||
|
||||
**HOW:**
|
||||
```bash
|
||||
python calc.py "2+3*4" # stdout: 14, exit 0
|
||||
python calc.py "1 +" # stderr: error message, exit 1
|
||||
python calc.py "1/0" # stderr: error message, exit 1
|
||||
python -m unittest calc.test_evaluator.TestCLI -v
|
||||
```
|
||||
|
||||
**EXPECTED:** 6 CLI tests pass; outputs as stated above.
|
||||
|
||||
**WHERE:** `calc.py` (repo root).
|
||||
|
||||
---
|
||||
|
||||
## Gate D5 — CLAIMED, awaiting Adversary
|
||||
|
||||
**WHAT:** Full suite (lex + parse + eval) passes with 0 failures; prior phases not regressed.
|
||||
|
||||
**HOW:**
|
||||
```bash
|
||||
python -m unittest -q
|
||||
```
|
||||
|
||||
**EXPECTED:** 69 tests in ~0.1s, OK, 0 failures.
|
||||
|
||||
**WHERE:** `calc/test_lexer.py`, `calc/test_parser.py`, `calc/test_evaluator.py`.
|
||||
Reference in New Issue
Block a user