diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-22 15:33:17 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-22 15:35:05 +0000 |
| commit | 8745f421b4cf7e1d54c17a360d46fab889ca12cc (patch) | |
| tree | 4c2a3508627db04493af35643580417d41b63f89 /tests/i | |
| parent | 5e84edbe1a79c6a7752ee276ea6c1a4daef4fa8e (diff) | |
feat(input)!: validate INPUT and read whole lines into STRING
Scalar INPUT now reads one whitespace-delimited token through module-local
IR helpers instead of scanf, then skips spaces and tabs and consumes one
newline. INTEGER, REAL, BOOLEAN (TRUE or FALSE in any case) and CHAR are
validated, and bad input or end of input is a runtime error. STRING INPUT
reads the rest of the line. The unused scanf and REAL printf format globals
are removed.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i')
| -rw-r--r-- | tests/i/input-targets/input.txt | 4 | ||||
| -rw-r--r-- | tests/i/input-targets/notes.md | 4 | ||||
| -rw-r--r-- | tests/i/stdin/input.txt | 2 | ||||
| -rw-r--r-- | tests/i/stdin/notes.md | 2 |
4 files changed, 7 insertions, 5 deletions
diff --git a/tests/i/input-targets/input.txt b/tests/i/input-targets/input.txt index dc0af77..8d0376e 100644 --- a/tests/i/input-targets/input.txt +++ b/tests/i/input-targets/input.txt @@ -1,2 +1,4 @@ 10 20 30 -40 50 Ada 1 A 2.5 -7 60 70 80 90 100 +40 50 +Ada +TRUE A 2.5 -7 60 70 80 90 100 diff --git a/tests/i/input-targets/notes.md b/tests/i/input-targets/notes.md index dded40c..57c7db4 100644 --- a/tests/i/input-targets/notes.md +++ b/tests/i/input-targets/notes.md @@ -2,6 +2,6 @@ Human review: pending. Expected output was independently traced by AI, not captured from cpsc. -Basis: CIE guide p. 15 section 5.1 allows individual data-structure elements. Native C input, numeric BOOLEAN input, whitespace-delimited STRING input and exceptions follow project behavior. +Basis: CIE guide p. 15 section 5.1 allows individual data-structure elements. Native C input, token-based scalar input, rest-of-line STRING input and exceptions follow project behavior. -Trace: the loop stores 10, 20, 30; the grid receives 40. Student 2 receives 50, Ada, true, A, 2.5 and -7, then its score becomes 80 through P. The class fields receive 60 and 70. NextIndex prints once and selects Scores[1], which receives 90. Bounds and null-pointer failures occur before reading input, leaving 100 for the final valid input. +Trace: the loop stores 10, 20, 30; the grid receives 40. Student 2 receives 50, the line Ada, true, A, 2.5 and -7, then its score becomes 80 through P. The class fields receive 60 and 70. NextIndex prints once and selects Scores[1], which receives 90. Bounds and null-pointer failures occur before reading input, leaving 100 for the final valid input. diff --git a/tests/i/stdin/input.txt b/tests/i/stdin/input.txt index 604b657..4ac051f 100644 --- a/tests/i/stdin/input.txt +++ b/tests/i/stdin/input.txt @@ -1,4 +1,4 @@ -7 -1 +TRUE Z hello diff --git a/tests/i/stdin/notes.md b/tests/i/stdin/notes.md index 62f8727..63f1a22 100644 --- a/tests/i/stdin/notes.md +++ b/tests/i/stdin/notes.md @@ -2,4 +2,4 @@ Human review: pending. Expected output was independently traced by AI, not captured from cpsc. -Basis and trace: CIE p. 15; the project INPUT contract reads BOOLEAN as an integer (nonzero is true) and STRING as a whitespace-delimited token. +Basis and trace: CIE p. 15; the project INPUT contract reads BOOLEAN as TRUE or FALSE in any case, other scalars as whitespace-delimited tokens, and STRING as the rest of the line. |
