rimelabs-sdk 0.1.0-alpha.11

Rime streaming TTS, STT and Prism realtime SDK
Documentation
use super::peer::Peer;
use crate::realtime::{RealtimeConnectOptions, RealtimeUpdateOptions, Truncation};
use serde_json::json;
#[tokio::test]
async fn truncation_connect_update_and_acknowledgment() {
    for (value, wire) in [
        (Truncation::Auto, json!("auto")),
        (Truncation::Disabled, json!("disabled")),
        (
            Truncation::RetentionRatio(0.9),
            json!({"type":"retention_ratio","retention_ratio":0.9}),
        ),
        (
            Truncation::RetentionRatio(1.0),
            json!({"type":"retention_ratio","retention_ratio":1.0}),
        ),
    ] {
        let mut p = Peer::new().await;
        let (c, s) = p
            .setup_with(RealtimeConnectOptions::default().truncation(value.clone()))
            .await;
        assert_eq!(p.update().await["truncation"], wire);
        assert!(s.info().truncation.is_none());
        let clone = s.clone();
        let setting = value.clone();
        let task = tokio::spawn(async move {
            clone
                .update(RealtimeUpdateOptions::default().truncation(setting))
                .await
        });
        let q = p.next("session.update").await;
        assert_eq!(q["session"], json!({"truncation":wire}));
        p.send(json!({"type":"session.updated","prism_request_event_id":q["event_id"],"session":{"id":"session-1","truncation":wire}})).await;
        assert_eq!(task.await.unwrap().unwrap().truncation, Some(value.clone()));
        assert_eq!(s.info().truncation, Some(value));
        c.close().await;
    }
}
#[test]
fn omitted_and_invalid_truncation() {
    assert!(
        crate::realtime::client::settings(&RealtimeConnectOptions::default())
            .unwrap()
            .get("truncation")
            .is_none()
    );
    for ratio in [0.0, -1.0, 1.1, f64::NAN, f64::INFINITY] {
        assert!(crate::realtime::client::patch(
            RealtimeUpdateOptions::default().truncation(Truncation::RetentionRatio(ratio))
        )
        .is_err());
    }
}