use super::super::*;
#[test]
fn _0001() {
let scope = scope!();
accept(
&scope,
StartExpression,
"[1,2,3][2]",
r#"
Filter
├─ List
│ ├─ Numeric
│ │ └─ `1`
│ ├─ Numeric
│ │ └─ `2`
│ └─ Numeric
│ └─ `3`
└─ Numeric
└─ `2`
"#,
false,
);
}
#[test]
fn _0002() {
let scope = scope!();
accept(
&scope,
StartExpression,
"[1,2,3][item >= 2]",
r#"
Filter
├─ List
│ ├─ Numeric
│ │ └─ `1`
│ ├─ Numeric
│ │ └─ `2`
│ └─ Numeric
│ └─ `3`
└─ Ge
├─ Name
│ └─ `item`
└─ Numeric
└─ `2`
"#,
false,
);
}
#[test]
fn _0003() {
let scope = scope!();
accept(
&scope,
StartExpression,
"EmployeeTable[name=LastName]",
r#"
Filter
├─ Name
│ └─ `EmployeeTable`
└─ Eq
├─ Name
│ └─ `name`
└─ Name
└─ `LastName`
"#,
false,
);
}
#[test]
fn _0004() {
let scope = scope!();
accept(
&scope,
StartExpression,
"EmployeeTable[1].deptNum",
r#"
Path
├─ Filter
│ ├─ Name
│ │ └─ `EmployeeTable`
│ └─ Numeric
│ └─ `1`
└─ Name
└─ `deptNum`
"#,
false,
);
}
#[test]
fn _0005() {
let scope = scope!();
accept(
&scope,
StartExpression,
r#"DeptTable[number=EmployeeTable[name=LastName].deptNum[1]].manager[1]"#,
r#"
Filter
├─ Path
│ ├─ Filter
│ │ ├─ Name
│ │ │ └─ `DeptTable`
│ │ └─ Eq
│ │ ├─ Name
│ │ │ └─ `number`
│ │ └─ Filter
│ │ ├─ Path
│ │ │ ├─ Filter
│ │ │ │ ├─ Name
│ │ │ │ │ └─ `EmployeeTable`
│ │ │ │ └─ Eq
│ │ │ │ ├─ Name
│ │ │ │ │ └─ `name`
│ │ │ │ └─ Name
│ │ │ │ └─ `LastName`
│ │ │ └─ Name
│ │ │ └─ `deptNum`
│ │ └─ Numeric
│ │ └─ `1`
│ └─ Name
│ └─ `manager`
└─ Numeric
└─ `1`
"#,
false,
);
}
#[test]
fn _0006() {
let scope = scope!();
scope.set_entry_name("?".into());
scope.set_entry_name("Lender Name".into());
accept(
&scope,
StartExpression,
r#"count(Ratings[Lender Name = ?.Lender Name and Customer Rating > 4]) > 0"#,
r#"
Gt
├─ FunctionInvocation
│ ├─ Name
│ │ └─ `count`
│ └─ PositionalParameters
│ └─ Filter
│ ├─ Name
│ │ └─ `Ratings`
│ └─ And
│ ├─ Eq
│ │ ├─ Name
│ │ │ └─ `Lender Name`
│ │ └─ Path
│ │ ├─ Name
│ │ │ └─ `?`
│ │ └─ Name
│ │ └─ `Lender Name`
│ └─ Gt
│ ├─ Name
│ │ └─ `Customer Rating`
│ └─ Numeric
│ └─ `4`
└─ Numeric
└─ `0`
"#,
false,
);
}