#[path = "../../../os-pci-discovery/src/bridges.rs"] mod pci_bridges; use pci_bridges::{Bridge, BusTree, Error}; #[test] fn os_pci_discovery_bridges_positive() { let mut tree = BusTree::<2>::new(0, 255).unwrap(); let outer = tree.add_root(0, 1, 2).unwrap(); let inner = tree.add_child(outer, 1, 2, 2).unwrap(); assert_eq!(outer, 0); assert_eq!(inner, 1); assert_eq!(tree.owner(0), None); assert_eq!(tree.owner(1), Some(outer)); assert_eq!(tree.owner(2), Some(inner)); assert_eq!(tree.owner(3), None); assert_eq!(tree.count(), 2); assert_eq!(tree.snapshot().entries, [ Some(Bridge {primary: 0, secondary: 1, subordinate: 2, parent: None, depth: 1}), Some(Bridge {primary: 1, secondary: 2, subordinate: 2, parent: Some(outer), depth: 2}), ]); } #[test] fn os_pci_discovery_bridges_negative() { let mut tree = BusTree::<2>::new(0, 255).unwrap(); let outer = tree.add_root(0, 1, 2).unwrap(); let before = tree.snapshot(); assert_eq!(tree.add_child(outer, 1, 1, 2), Err(Error::SecondaryCollision)); assert_eq!(tree.snapshot(), before); assert_eq!(tree.add_child(outer, 0, 2, 2), Err(Error::OutsideParent)); assert_eq!(tree.add_child(outer, 1, 3, 3), Err(Error::OutsideParent)); assert_eq!(tree.add_root(1, 3, 3), Err(Error::InvalidRoot)); assert_eq!(tree.add_child(7, 1, 2, 2), Err(Error::UnknownParent)); assert_eq!(tree.snapshot(), before); let inner = tree.add_child(outer, 1, 2, 2).unwrap(); assert_eq!(tree.owner(1), Some(outer)); assert_eq!(tree.owner(2), Some(inner)); assert_eq!(tree.add_root(0, 3, 3), Err(Error::Full)); assert_eq!(tree.count(), 2); }