ic-query 0.93.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
use super::*;

#[test]
fn assessment_status_labels_round_trip() {
    assert_status_labels(&[
        (NnsTopologyAssessmentStatus::Ok, "ok"),
        (NnsTopologyAssessmentStatus::Attention, "attention"),
    ]);
}

#[test]
fn capacity_status_labels_round_trip() {
    assert_status_labels(&[
        (NnsTopologyCapacityStatus::Over, "over"),
        (NnsTopologyCapacityStatus::Unknown, "unknown"),
        (NnsTopologyCapacityStatus::Full, "full"),
        (NnsTopologyCapacityStatus::Available, "available"),
    ]);
}

#[test]
fn provider_status_labels_round_trip() {
    assert_status_labels(&[
        (
            NnsTopologyProviderStatus::UnknownProvider,
            "unknown_provider",
        ),
        (NnsTopologyProviderStatus::Over, "over"),
        (NnsTopologyProviderStatus::Unused, "unused"),
        (NnsTopologyProviderStatus::Ok, "ok"),
    ]);
}

fn assert_status_labels<T>(cases: &[(T, &str)])
where
    T: Copy + std::fmt::Debug + Eq + serde::Serialize + serde::de::DeserializeOwned,
{
    for &(status, label) in cases {
        assert_eq!(
            serde_json::to_string(&status).unwrap(),
            format!("\"{label}\"")
        );
        assert_eq!(
            serde_json::from_str::<T>(&format!("\"{label}\"")).unwrap(),
            status
        );
    }
}