This commit is contained in:
nora 2022-01-01 13:47:56 +01:00
parent 88a3a585e7
commit 4e30201be4
11 changed files with 222 additions and 20 deletions

24
tests/common.rs Normal file
View file

@ -0,0 +1,24 @@
#[macro_export]
macro_rules! run_test {
($name:ident, $code:expr) => {
#[test]
fn $name() {
let code = $code;
let output = _run_test(code);
insta::assert_debug_snapshot!(output);
}
};
}
#[doc(hidden)]
pub fn _run_test(code: &str) -> String {
let mut stdout = Vec::<u8>::new();
let mut cfg = dilaria::Config {
debug: false,
stdout: &mut stdout,
};
dilaria::run_program(code, &mut cfg);
String::from_utf8(stdout).unwrap()
}

53
tests/control_flow.rs Normal file
View file

@ -0,0 +1,53 @@
mod common;
use crate::common::_run_test;
run_test!(
single_if,
r#"
if true {
print "true!";
}
if false {
print "WRONG";
}
"#
);
run_test!(
if_else,
r#"
if true {
print "true!";
} else {
print "WRONG";
}
if false {
print "WRONG";
} else {
print "true!";
}
"#
);
run_test!(
if_else_if,
r#"
if false {
print "WRONG";
} else if true {
print "true!";
} else {
print "WRONG";
}
if false {
print "WRONG";
} else if false {
print "WRONG";
} else {
print "true!";
}
"#
);

View file

@ -0,0 +1,7 @@
---
source: tests/control_flow.rs
assertion_line: 17
expression: output
---
"true!\ntrue!\n"

View file

@ -0,0 +1,7 @@
---
source: tests/control_flow.rs
assertion_line: 34
expression: output
---
"true!\ntrue!\n"

View file

@ -0,0 +1,7 @@
---
source: tests/control_flow.rs
assertion_line: 4
expression: output
---
"true!\n"