blob: c99c21a93c5f9014ad959386bd1de5b30dfb7f72 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use {
anyhow::Error,
bt_test_harness::{access::AccessHarness, inspect::InspectHarness},
diagnostics_reader::DiagnosticsHierarchy,
fuchsia_bluetooth::{expect_eq, expectation::asynchronous::ExpectableExt},
test_harness::run_suite,
};
const GAP_CHILD_NODE: &str = "system";
fn hierarchy_has_child(hierarchy: &DiagnosticsHierarchy, name: &str) -> bool {
hierarchy.children.iter().find(|c| c.name == name).is_some()
}
async fn test_gap_hierarchy_published(
(harness, _btgap): (InspectHarness, AccessHarness),
) -> Result<(), Error> {
harness.write_state().moniker = vec!["bt-gap.cmx".to_string()];
let min_num_hierarchies: usize = 1;
let mut state = harness.expect_n_hierarchies(min_num_hierarchies).await?;
let mut gap_hierarchies_count: usize = 0;
loop {
let hierarchy = state.hierarchies.pop();
match hierarchy {
Some(hierarchy) => {
if hierarchy_has_child(&hierarchy, GAP_CHILD_NODE) {
gap_hierarchies_count += 1;
}
}
None => break,
}
}
expect_eq!(1, gap_hierarchies_count)?;
Ok(())
}
/// Run all test cases.
pub fn run_all() -> Result<(), Error> {
run_suite!("inspect", [test_gap_hierarchy_published])
}