FEATURE: Fix bug in out statements;

Also add tests for modules.
This commit is contained in:
Jeremy Wall 2019-05-17 19:58:48 -05:00
parent 525cdd32e6
commit 0d78438c2a
2 changed files with 87 additions and 1 deletions

View File

@ -389,7 +389,7 @@ where
//
}
Statement::Output(_, _tok, _expr) => {
write!(&mut self.w, "out {} = ", _tok.fragment)?;
write!(&mut self.w, "out {} ", _tok.fragment)?;
self.render_expr(&_expr)?;
//
}

View File

@ -220,3 +220,89 @@ fn test_copy_expr_one_arg_printing() {
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_out_expr_printing() {
let input = "out json {\n foo = 1,\n};";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_select_expr_no_default_printing() {
let input = "select true, {\n true = 1,\n false = 2,\n};";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_select_expr_with_default_printing() {
let input = "select true, 3, {\n true = 1,\n false = 2,\n};";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_not_expr_printing() {
let input = "not true;";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_module_no_out_expr_printing() {
let input = "let m = module {
hostname = \"\",
mem = 2048,
cpu = 2,
} => {
let config = {
hostname = mod.hostname,
\"memory_size\" = mod.mem,
\"cpu_count\" = mod.cpu,
};
};";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}
#[test]
fn test_module_with_out_expr_printing() {
let input = "let m = module {
hostname = \"\",
mem = 2048,
cpu = 2,
} => (config) {
let config = {
hostname = mod.hostname,
\"memory_size\" = mod.mem,
\"cpu_count\" = mod.cpu,
};
};";
let stmts = assert_parse(input);
let mut buffer: Vec<u8> = Vec::new();
let mut printer = AstPrinter::new(2, &mut buffer);
printer.render(&stmts);
assert!(printer.err.is_none());
assert_eq!(String::from_utf8(buffer).unwrap(), format!("{}\n", input));
}