alpine-protocol-sdk 0.2.4

High-level SDK on top of the ALPINE protocol layer.
Documentation
use alpine_protocol_sdk::AlpineSdkError;

#[test]
fn user_hint_snapshots() {
    let cases = vec![
        (
            AlpineSdkError::Timeout,
            "request timed out; check network reachability",
        ),
        (
            AlpineSdkError::DiscoveryFailed("x".into()),
            "discovery failed; confirm the device is on the same network",
        ),
        (
            AlpineSdkError::HandshakeFailed("x".into()),
            "handshake failed; verify credentials and device time",
        ),
        (
            AlpineSdkError::UntrustedDevice("x".into()),
            "device identity not trusted; verify trust bundle",
        ),
        (
            AlpineSdkError::DangerousControlDisallowed,
            "dangerous control blocked; enable allow_dangerous to proceed",
        ),
        (
            AlpineSdkError::VendorExtensionNotRegistered("x".into()),
            "vendor extension not registered; register before use",
        ),
        (
            AlpineSdkError::UnsupportedEnvironment("x".into()),
            "environment not supported for UDP discovery/control",
        ),
        (
            AlpineSdkError::IncompatibleProtocol("x".into()),
            "device protocol version is incompatible with this SDK",
        ),
        (
            AlpineSdkError::Quarantined("x".into()),
            "device is quarantined; observe-only mode enforced",
        ),
    ];

    for (err, expected) in cases {
        assert_eq!(err.user_hint().unwrap_or_default(), expected);
    }
}