// 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.

#![cfg(test)]

use anyhow::Error;
use fidl_fuchsia_hwinfo::DeviceMarker;
use fuchsia_async as fasync;
use fuchsia_component::client::connect_to_protocol;

#[fasync::run_singlethreaded(test)]
async fn request_device_info() -> Result<(), Error> {
    let device_info_provider =
        connect_to_protocol::<DeviceMarker>().expect("Failed to connect to device info service");
    let response = device_info_provider.get_info().await?;
    assert_eq!(response.serial_number.unwrap().to_string(), "dummy_serial_number".to_string());
    assert_eq!(response.is_retail_demo.unwrap(), true);
    assert_eq!(response.retail_sku.unwrap(), "XX12345-YY");
    Ok(())
}
