| 217 | |
| 218 | #[test] |
| 219 | fn parse_simple_match() { |
| 220 | let q = parse("MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN a, b").unwrap(); |
| 221 | assert_eq!(q.clauses.len(), 1); |
| 222 | assert!(!q.clauses[0].optional); |
| 223 | assert_eq!(q.clauses[0].patterns.len(), 1); |
| 224 | |
| 225 | let triple = &q.clauses[0].patterns[0].triples[0]; |
| 226 | assert_eq!(triple.src.name.as_deref(), Some("a")); |
| 227 | assert_eq!(triple.src.label.as_deref(), Some("Person")); |
| 228 | assert_eq!(triple.edge.edge_type.as_deref(), Some("KNOWS")); |
| 229 | assert_eq!(triple.edge.direction, EdgeDirection::Right); |
| 230 | assert_eq!(triple.dst.name.as_deref(), Some("b")); |
| 231 | assert_eq!(triple.dst.label.as_deref(), Some("Person")); |
| 232 | |
| 233 | assert_eq!(q.return_columns.len(), 2); |
| 234 | assert_eq!(q.return_columns[0].expr, "a"); |
| 235 | } |
| 236 | |
| 237 | #[test] |
| 238 | fn parse_multi_hop() { |