use libyang::YangStore;
const YANG_DIR: &str = "tests/yang";
fn load(name: &str) -> YangStore {
let mut store = YangStore::new();
store.add_path(YANG_DIR);
store
.read_with_resolve(name)
.expect("mutually importing modules should load");
store.identity_resolve();
store
}
#[test]
fn mutually_importing_modules_terminate() {
let store = load("augment-order-target");
assert!(store.find_module("augment-order-target").is_some());
for m in ["a", "b", "c", "d", "e", "f"] {
let name = format!("augment-order-{m}");
assert!(
store.find_module(&name).is_some(),
"{name} should have been loaded through the cycle"
);
}
}
#[test]
fn entering_the_cycle_from_either_side_works() {
let store = load("augment-order-a");
assert!(store.find_module("augment-order-a").is_some());
assert!(store.find_module("augment-order-target").is_some());
}
#[test]
fn submodules_are_stored_not_silently_dropped() {
let mut store = YangStore::new();
store.add_path(YANG_DIR);
store
.read_with_resolve("augment-target")
.expect("module loads");
assert!(store.find_module("augment-target").is_some());
assert!(store.find_submodule("augment-target").is_none());
}