mod common;
macro_rules! assert_err_eq {
($setup:expr, $expected_message:expr) => {
let _module = $setup.compiler.compile();
let _err = _module.unwrap_err();
dbg!(&$expected_message);
dbg!(&_err);
assert_eq!(_err.to_string(), $expected_message);
};
}
#[test]
fn syntax_error_in_code_section() {
let s = common::Setup::from_str(
"syntax_error_in_code_section",
"csv",
r#"
## Welcome to the all_features.csvpp test. this is a comment
##
fn foo_fn a + b * c
---
foo,bar
"#,
);
assert_err_eq!(
s,
"Syntax error in code section of \"integration_test_syntax_error_in_code_section.csvpp\"
On line 4 Expected `(` for a function definition but saw `<`
1:
2: ## Welcome to the all_features.csvpp test. this is a comment
3: ##
4: fn foo_fn a + b * c
: ---------^
5: ---
6: foo,bar
"
);
}
#[test]
fn syntax_error_in_option_definition() {
let s = common::Setup::from_str(
"syntax_error_in_option_definition",
"csv",
r#"
---
foo,bar,[[text=bold ,foo
"#,
);
assert_err_eq!(
s,
"Syntax error in cell C1 of \"integration_test_syntax_error_in_option_definition.csvpp\"
On line 3 Expected a OptionName but saw unrecognized token ``
1:
2: ---
3: foo,bar,[[text=bold ,foo
: ------------------^
"
);
}
#[test]
fn bad_choice_in_option_with_possibilities() {
let s = common::Setup::from_str(
"bad_choice_in_option_with_possibilities",
"csv",
r#"
---
foo,bar,[[b=foo]],foo
"#,
);
assert_err_eq!(
s,
"Syntax error in cell C1 of \"integration_test_bad_choice_in_option_with_possibilities.csvpp\"
On line 3 received invalid value when parsing `border` option but saw `foo`
Possible values: all (a) | top (t) | bottom (b) | left (l) | right (r)
1:
2: ---
3: foo,bar,[[b=foo]],foo
: --------------^
"
);
}
#[test]
fn syntax_error_in_csv_section() {
let s = common::Setup::from_str(
"syntax_error_in_csv_section",
"csv",
r#"
# it's a common problem that the `function_in_file1(1, 2)` call needs to be quoted
# because it has a comma
---
function_in_file1(1 * 2) , =function_in_file1(1, 2) , should be 1 * 44
"#,
);
assert_err_eq!(
s,
"Syntax error in cell B1 of \"integration_test_syntax_error_in_csv_section.csvpp\"
On line 5 Expected an expression but saw EOF
If your formula has a comma in it, you might need to escape it with quotes (i.e. `foo,\"=my_function(1, 2)\",bar`)
2: # it's a common problem that the `function_in_file1(1, 2)` call needs to be quoted
3: # because it has a comma
4: ---
5: function_in_file1(1 * 2) , =function_in_file1(1, 2) , should be 1 * 44
: --------------------------------------------------^
");
}
#[test]
fn module_loader_module_does_not_exist() {
let s = common::Setup::from_str(
"module_loader_module_does_not_exist",
"csv",
r#"
use foobar
a := 1 * 2
---
"#,
);
assert_err_eq!(
s,
"Error loading module foobar
Error reading source \"foobar.csvpp\"
Error reading source code foobar.csvpp: No such file or directory (os error 2)
"
);
}