()
| 125 | |
| 126 | #[test] |
| 127 | fn or() { |
| 128 | let data = vec![ |
| 129 | TxData::add(1, ":name", String("Ivan".to_string())), |
| 130 | TxData::add(1, ":age", Number(10)), |
| 131 | TxData::add(2, ":name", String("Ivan".to_string())), |
| 132 | TxData::add(2, ":age", Number(20)), |
| 133 | TxData::add(3, ":name", String("Oleg".to_string())), |
| 134 | TxData::add(3, ":age", Number(10)), |
| 135 | TxData::add(4, ":name", String("Oleg".to_string())), |
| 136 | TxData::add(4, ":age", Number(20)), |
| 137 | TxData::add(5, ":name", String("Ivan".to_string())), |
| 138 | TxData::add(5, ":age", Number(10)), |
| 139 | TxData::add(6, ":name", String("Ivan".to_string())), |
| 140 | TxData::add(6, ":age", Number(20)), |
| 141 | ]; |
| 142 | |
| 143 | run_cases(vec![ |
| 144 | Case { |
| 145 | description: "[:find ?e :where (or [?e :name Oleg] [?e :age 10])]", |
| 146 | plan: Plan::Union(Union { |
| 147 | variables: vec![0], |
| 148 | plans: vec![ |
| 149 | Plan::Hector(Hector { |
| 150 | variables: vec![0], |
| 151 | bindings: vec![ |
| 152 | Binding::attribute(0, ":name", 1), |
| 153 | Binding::constant(1, String("Oleg".to_string())), |
| 154 | ], |
| 155 | }), |
| 156 | Plan::Hector(Hector { |
| 157 | variables: vec![0], |
| 158 | bindings: vec![ |
| 159 | Binding::attribute(0, ":age", 1), |
| 160 | Binding::constant(1, Number(10)), |
| 161 | ], |
| 162 | }), |
| 163 | ], |
| 164 | }), |
| 165 | transactions: vec![data.clone()], |
| 166 | expectations: vec![vec![ |
| 167 | (vec![Eid(1)], 0, 1), |
| 168 | (vec![Eid(3)], 0, 1), |
| 169 | (vec![Eid(4)], 0, 1), |
| 170 | (vec![Eid(5)], 0, 1), |
| 171 | ]], |
| 172 | }, |
| 173 | Case { |
| 174 | description: "[:find ?e :where (or [?e :name Oleg] [?e :age 30])] (one branch empty)", |
| 175 | plan: Plan::Union(Union { |
| 176 | variables: vec![0], |
| 177 | plans: vec![ |
| 178 | Plan::Hector(Hector { |
| 179 | variables: vec![0], |
| 180 | bindings: vec![ |
| 181 | Binding::attribute(0, ":name", 1), |
| 182 | Binding::constant(1, String("Oleg".to_string())), |
| 183 | ], |
| 184 | }), |
nothing calls this directly
no test coverage detected