Spezifikationsabgleich und Regressionsnachweise abschließen
This commit is contained in:
@@ -128,3 +128,58 @@ fn cli_meldet_physische_quellorte_auch_nach_verschachtelten_includes() {
|
||||
assert!(tbc(&dir, "run", "empty.bas").status.success());
|
||||
std::fs::remove_dir_all(dir).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn erlaubte_grafik_und_benannte_nonfeatures_werden_per_cli_geprueft() {
|
||||
let dir = std::env::temp_dir().join(format!("tb-graphics-check-{}", std::process::id()));
|
||||
std::fs::create_dir_all(&dir).unwrap();
|
||||
let path = dir.join("probe.bas");
|
||||
for mode in 0..=13 {
|
||||
std::fs::write(
|
||||
&path,
|
||||
format!("SCREEN {mode}\nLINE (1,1)-(4,4),1\nPAINT (2,2),1\nVIEW (0,0)-(10,10)\n"),
|
||||
)
|
||||
.unwrap();
|
||||
let out = tbc(&dir, "check", "probe.bas");
|
||||
assert!(
|
||||
out.status.success() && out.stderr.is_empty(),
|
||||
"SCREEN {mode}: {out:?}"
|
||||
);
|
||||
}
|
||||
for (name, source) in [
|
||||
("POKE", "POKE 1,2"),
|
||||
("PEEK", "PRINT PEEK(1)"),
|
||||
("CIRCLE", "CIRCLE (1,1),1"),
|
||||
("WINDOW", "WINDOW (0,0)-(10,10)"),
|
||||
("IOCTL", "IOCTL #1, \"x\""),
|
||||
("PSET", "PSET (1,1),2"),
|
||||
("PSET", "PSET STEP (1,1),2"),
|
||||
("PRESET", "PRESET (1,1),2"),
|
||||
("PRESET", "PRESET STEP (1,1),2"),
|
||||
("CIRCLE", "CIRCLE STEP (1,1),2"),
|
||||
("WINDOW", "WINDOW SCREEN (0,0)-(10,10)"),
|
||||
("WINDOW", "WINDOW"),
|
||||
("PALETTE", "DIM a%(15)\nPALETTE USING a%(0)"),
|
||||
("PALETTE", "PALETTE"),
|
||||
("PALETTE", "IF 1 THEN PALETTE USING a%(0)"),
|
||||
] {
|
||||
std::fs::write(&path, source).unwrap();
|
||||
let out = tbc(&dir, "check", "probe.bas");
|
||||
let message = String::from_utf8_lossy(&out.stderr);
|
||||
assert!(
|
||||
!out.status.success()
|
||||
&& message.contains("Feature unavailable")
|
||||
&& message.contains(name),
|
||||
"{out:?}"
|
||||
);
|
||||
}
|
||||
// Bibliotheksnamen sind keine reservierten Variablennamen.
|
||||
std::fs::write(
|
||||
&path,
|
||||
"DIM PSET(2), PALETTE(2)\nPSET(1)=3\nPALETTE(1)=4\nPRINT PSET(1),PALETTE(1)",
|
||||
)
|
||||
.unwrap();
|
||||
let out = tbc(&dir, "check", "probe.bas");
|
||||
assert!(out.status.success(), "{out:?}");
|
||||
std::fs::remove_dir_all(dir).unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user