oy-cli 0.10.1

Local AI coding CLI for inspecting, editing, running commands, and auditing repositories
Documentation
use super::*;
use serde_json::json;

#[test]
fn decoder_rewraps_split_bedrock_event_stream_frames() {
    let frame = encode_test_event(
        "contentBlockDelta",
        &json!({"delta": {"text": "hi"}, "p": "pad"}),
    );
    let split = frame.len() / 2;
    let mut decoder = Decoder::default();

    assert!(decoder.push_chunk(&frame[..split]).unwrap().is_empty());
    assert_eq!(
        decoder.push_chunk(&frame[split..]).unwrap(),
        vec![json!({"contentBlockDelta": {"delta": {"text": "hi"}}})]
    );
}

#[test]
fn decoder_rejects_invalid_crc() {
    let mut frame = encode_test_event("metadata", &json!({"usage": {"inputTokens": 1}}));
    let len = frame.len();
    frame[len - 1] ^= 0xff;

    let err = Decoder::default().push_chunk(&frame).unwrap_err();

    assert!(err.to_string().contains("invalid message CRC"));
}