use super::super::*;
fn accept_name(scope: &ParsingScope, name: &str, expected: &str) {
accept(scope, StartExpression, name, &format!("\n Name\n └─ `{expected}`\n "), false);
}
#[test]
fn _0001() {
let scope = scope!();
scope.set_entry_name("hello world".into());
accept(
&scope,
StartExpression,
"hello world",
r#"
Name
└─ `hello world`
"#,
false,
);
}
#[test]
fn _0002() {
let scope = scope!();
scope.set_entry_name(" \n \n \t thing \n \t \t ".into());
accept(
&scope,
StartExpression,
"thing",
r#"
Name
└─ `thing`
"#,
false,
);
}
#[test]
fn _0003() {
let scope = scope!();
scope.set_entry_name("income/loss".into());
accept(
&scope,
StartExpression,
"income/loss",
r#"
Name
└─ `income/loss`
"#,
false,
);
}
#[test]
fn _0004() {
let scope = scope!();
scope.set_entry_name("fr**n*s".into());
accept(
&scope,
StartExpression,
"fr**n*s",
r#"
Name
└─ `fr**n*s`
"#,
false,
);
}
#[test]
fn _0005() {
let scope = scope!();
accept(
&scope,
StartExpression,
"book",
r#"
Name
└─ `book`
"#,
false,
);
}
#[test]
fn _0006() {
let scope = scope!();
accept(
&scope,
StartExpression,
"profit/loss",
r#"
Name
└─ `profit/loss`
"#,
false,
);
}
#[test]
fn _0007() {
let scope = scope!();
scope.set_entry_name("before.after".into());
accept(
&scope,
StartExpression,
"before.after",
r#"
Name
└─ `before.after`
"#,
false,
);
}
#[test]
fn _0008() {
let scope = dsntk_feel::FeelScope::default();
assert!(crate::parse_name(&scope, "5Cards", false).is_err());
}
#[test]
fn _0009() {
let scope = dsntk_feel::FeelScope::default();
assert!(crate::parse_name(&scope, "123.45", false).is_err());
}
#[test]
fn _0010() {
let scope = scope!();
scope.set_entry_name("thing".into());
scope.set_entry_name("one two three four".into());
scope.set_entry_name("one and two".into());
scope.set_entry_name("one or two".into());
scope.set_entry_name("before.after".into());
scope.set_entry_name("before.or.after".into());
scope.set_entry_name("before.and.after".into());
scope.set_entry_name("before.between.after".into());
scope.set_entry_name("before.next to between.worm".into());
scope.set_entry_name("income/loss".into());
scope.set_entry_name("per/month/income/loss".into());
scope.set_entry_name("a-b".into());
scope.set_entry_name("to-be-or-not-to-be".into());
scope.set_entry_name("that's".into());
scope.set_entry_name("ok that's".into());
scope.set_entry_name("bed+breakfast".into());
scope.set_entry_name("night+and+day".into());
scope.set_entry_name("fr**n*s".into());
scope.set_entry_name("bo++e--m*".into());
scope.set_entry_name("wh*t*v*r".into());
accept_name(&scope, "thing", "thing");
accept_name(&scope, "one two three four", "one two three four");
accept_name(&scope, "one and two", "one and two");
accept_name(&scope, "one or two", "one or two");
accept_name(&scope, "before.after", "before.after");
accept_name(&scope, "before.or.after", "before.or.after");
accept_name(&scope, "before.and.after", "before.and.after");
accept_name(&scope, "before.between.after", "before.between.after");
accept_name(&scope, "before.next to between.worm", "before.next to between.worm");
accept_name(&scope, "income/loss", "income/loss");
accept_name(&scope, "per/month/income/loss", "per/month/income/loss");
accept_name(&scope, "a-b", "a-b");
accept_name(&scope, "to-be-or-not-to-be", "to-be-or-not-to-be");
accept_name(&scope, "that's", "that's");
accept_name(&scope, "ok that's", "ok that's");
accept_name(&scope, "bed+breakfast", "bed+breakfast");
accept_name(&scope, "night+and+day", "night+and+day");
accept_name(&scope, "fr**n*s", "fr**n*s");
accept_name(&scope, "bo++e--m*", "bo++e--m*");
accept_name(&scope, "wh*t*v*r", "wh*t*v*r");
}
#[test]
fn _0011() {
let scope = scope!();
scope.set_entry_name("?".into());
accept(
&scope,
StartExpression,
"?.Rating > 0",
r#"
Gt
├─ Path
│ ├─ Name
│ │ └─ `?`
│ └─ Name
│ └─ `Rating`
└─ Numeric
└─ `0`
"#,
false,
);
}
#[test]
fn _0012() {
let scope = scope!();
accept(
&scope,
StartExpression,
"?",
r#"
Name
└─ `?`
"#,
false,
);
}
#[test]
fn _0013() {
let scope = scope!();
scope.set_entry_name("_0001-input-data-string".into());
accept(
&scope,
StartExpression,
"_0001-input-data-string",
r#"
Name
└─ `_0001-input-data-string`
"#,
false,
);
}