()
| 294 | |
| 295 | #[test] |
| 296 | fn or_join() { |
| 297 | let data = vec![ |
| 298 | TxData::add(1, ":name", String("Ivan".to_string())), |
| 299 | TxData::add(1, ":age", Number(10)), |
| 300 | TxData::add(2, ":name", String("Ivan".to_string())), |
| 301 | TxData::add(2, ":age", Number(20)), |
| 302 | TxData::add(3, ":name", String("Oleg".to_string())), |
| 303 | TxData::add(3, ":age", Number(10)), |
| 304 | TxData::add(4, ":name", String("Oleg".to_string())), |
| 305 | TxData::add(4, ":age", Number(20)), |
| 306 | TxData::add(5, ":name", String("Ivan".to_string())), |
| 307 | TxData::add(5, ":age", Number(10)), |
| 308 | TxData::add(6, ":name", String("Ivan".to_string())), |
| 309 | TxData::add(6, ":age", Number(20)), |
| 310 | ]; |
| 311 | |
| 312 | run_cases(vec![Case { |
| 313 | description: "[:find ?e |
| 314 | :where |
| 315 | (or-join [?e] |
| 316 | [?e :name ?n] |
| 317 | (and [?e :age ?a] [?e :name ?n]))]", |
| 318 | plan: Plan::Union(Union { |
| 319 | variables: vec![0], |
| 320 | plans: vec![ |
| 321 | Plan::Hector(Hector { |
| 322 | variables: vec![0], |
| 323 | bindings: vec![Binding::attribute(0, ":name", 2)], |
| 324 | }), |
| 325 | Plan::Hector(Hector { |
| 326 | variables: vec![0], |
| 327 | bindings: vec![ |
| 328 | Binding::attribute(0, ":age", 1), |
| 329 | Binding::attribute(0, ":name", 2), |
| 330 | ], |
| 331 | }), |
| 332 | ], |
| 333 | }), |
| 334 | transactions: vec![data.clone()], |
| 335 | expectations: vec![vec![ |
| 336 | (vec![Eid(1)], 0, 1), |
| 337 | (vec![Eid(2)], 0, 1), |
| 338 | (vec![Eid(3)], 0, 1), |
| 339 | (vec![Eid(4)], 0, 1), |
| 340 | (vec![Eid(5)], 0, 1), |
| 341 | (vec![Eid(6)], 0, 1), |
| 342 | ]], |
| 343 | }]); |
| 344 | } |
nothing calls this directly
no test coverage detected