()
| 1301 | |
| 1302 | #[test] |
| 1303 | fn level3_removes() { |
| 1304 | let f = &mut MapForest::<u32, f32>::new(); |
| 1305 | let mut m = level3_sparse(f); |
| 1306 | m.verify(f, &()); |
| 1307 | |
| 1308 | // Check geometry. |
| 1309 | // Root: node11 |
| 1310 | // [ node2 170 node10 330 node16 490 node21 650 node26 810 node31 970 node36 1130 node41 ] |
| 1311 | // L1: node11 |
| 1312 | assert_eq!(m.tpath(0, f, &()), "node11[0]--node2[0]--node0[0]"); |
| 1313 | assert_eq!(m.tpath(10000, f, &()), "node11[7]--node41[4]--node40[4]"); |
| 1314 | |
| 1315 | // 650 is a critical key in the middle of the root. |
| 1316 | assert_eq!(m.tpath(640, f, &()), "node11[3]--node21[3]--node19[3]"); |
| 1317 | assert_eq!(m.tpath(650, f, &()), "node11[4]--node26[0]--node20[0]"); |
| 1318 | |
| 1319 | // Deleting 640 triggers a rebalance from node19 to node 20, cascading to n21 -> n26. |
| 1320 | assert_eq!(m.remove(640, f, &()), Some(64.0)); |
| 1321 | m.verify(f, &()); |
| 1322 | assert_eq!(m.tpath(650, f, &()), "node11[3]--node26[3]--node20[3]"); |
| 1323 | |
| 1324 | // 1130 is in the first leaf of the last L1 node. Deleting it triggers a rebalance node35 |
| 1325 | // -> node37, but no rebalance above where there is no right sibling. |
| 1326 | assert_eq!(m.tpath(1130, f, &()), "node11[6]--node41[0]--node35[0]"); |
| 1327 | assert_eq!(m.tpath(1140, f, &()), "node11[6]--node41[0]--node35[1]"); |
| 1328 | assert_eq!(m.remove(1130, f, &()), Some(113.0)); |
| 1329 | m.verify(f, &()); |
| 1330 | assert_eq!(m.tpath(1140, f, &()), "node11[6]--node41[0]--node37[0]"); |
| 1331 | } |
| 1332 | |
| 1333 | #[test] |
| 1334 | fn insert_many() { |
nothing calls this directly
no test coverage detected