bacnet-objects 0.12.0

BACnet object model: traits, database, and standard object types
Documentation
//! The object-owned Reliability evaluator on a Multi-state Output.

use super::*;
use bacnet_types::enums::Reliability;

#[test]
fn configuration_error_dominates_bypassed_invalid_present_value() {
    let mut mso = MultiStateOutputObject::new(1, "MSO-dominance", 2).unwrap();
    mso.present_value = 3;
    mso.feedback_value = 3;

    mso.evaluate_reliability_internal().unwrap();
    assert_eq!(
        mso.reliability,
        Reliability::CONFIGURATION_ERROR,
        "invalid configuration must dominate invalid Present_Value"
    );
    mso.feedback_value = 1;
    mso.evaluate_reliability_internal().unwrap();
    assert_eq!(mso.reliability, Reliability::MULTI_STATE_OUT_OF_RANGE);
    mso.write_property_from(
        PropertyIdentifier::PRESENT_VALUE,
        None,
        PropertyValue::Unsigned(1),
        None,
        &crate::command_source::test_origin(),
    )
    .unwrap();
    assert_eq!(
        mso.reliability,
        Reliability::NO_FAULT_DETECTED,
        "the central priority recalculation must recover synchronously"
    );
}