| 1364 | |
| 1365 | #[test] |
| 1366 | fn immutable_cursor() { |
| 1367 | let f = &mut MapForest::<u32, f32>::new(); |
| 1368 | let mut m = Map::<u32, f32>::new(); |
| 1369 | |
| 1370 | for i in 100..200 { |
| 1371 | m.insert(i, i as f32, f, &()); |
| 1372 | } |
| 1373 | |
| 1374 | let mut c = m.cursor(f, &()); |
| 1375 | |
| 1376 | let v = c.goto_first().unwrap(); |
| 1377 | assert_eq!(v, 100.0); |
| 1378 | assert_eq!(c.key(), Some(100)); |
| 1379 | assert_eq!(c.value(), Some(100.0)); |
| 1380 | |
| 1381 | let (k, v) = c.next().unwrap(); |
| 1382 | assert_eq!(k, 101); |
| 1383 | assert_eq!(v, 101.0); |
| 1384 | assert_eq!(c.key(), Some(101)); |
| 1385 | assert_eq!(c.value(), Some(101.0)); |
| 1386 | |
| 1387 | let (k, v) = c.next().unwrap(); |
| 1388 | assert_eq!(k, 102); |
| 1389 | assert_eq!(v, 102.0); |
| 1390 | assert_eq!(c.key(), Some(102)); |
| 1391 | assert_eq!(c.value(), Some(102.0)); |
| 1392 | |
| 1393 | let (k, v) = c.prev().unwrap(); |
| 1394 | assert_eq!(k, 101); |
| 1395 | assert_eq!(v, 101.0); |
| 1396 | assert_eq!(c.key(), Some(101)); |
| 1397 | assert_eq!(c.value(), Some(101.0)); |
| 1398 | |
| 1399 | let v = c.goto(175).unwrap(); |
| 1400 | assert_eq!(v, 175.0); |
| 1401 | assert_eq!(c.key(), Some(175)); |
| 1402 | assert_eq!(c.value(), Some(175.0)); |
| 1403 | |
| 1404 | let (k, v) = c.next().unwrap(); |
| 1405 | assert_eq!(k, 176); |
| 1406 | assert_eq!(v, 176.0); |
| 1407 | assert_eq!(c.key(), Some(176)); |
| 1408 | assert_eq!(c.value(), Some(176.0)); |
| 1409 | |
| 1410 | let (k, v) = c.prev().unwrap(); |
| 1411 | assert_eq!(k, 175); |
| 1412 | assert_eq!(v, 175.0); |
| 1413 | assert_eq!(c.key(), Some(175)); |
| 1414 | assert_eq!(c.value(), Some(175.0)); |
| 1415 | |
| 1416 | let v = c.goto(200); |
| 1417 | assert!(v.is_none()); |
| 1418 | assert!(c.key().is_none()); |
| 1419 | assert!(c.value().is_none()); |
| 1420 | |
| 1421 | for i in (100..200).rev() { |
| 1422 | let (k, v) = c.prev().unwrap(); |
| 1423 | assert_eq!(k, i); |