Codex Handbook
exec-server/src/noise_relay/ordered_ciphertext_tests.rs 52 lines
use pretty_assertions::assert_eq;use super::MAX_PENDING_BYTES;use super::OrderedCiphertextFrames;#[test]fn releases_ciphertexts_only_in_nonce_order() {    let mut frames = OrderedCiphertextFrames::default();    assert_eq!(        frames.push(/*seq*/ 1, b"second".to_vec()).unwrap(),        Vec::<Vec<u8>>::new()    );    assert_eq!(        frames.push(/*seq*/ 0, b"first".to_vec()).unwrap(),        vec![b"first".to_vec(), b"second".to_vec()]    );}#[test]fn ignores_duplicate_ciphertexts_without_replacing_buffered_record() {    let mut frames = OrderedCiphertextFrames::default();    assert_eq!(        frames.push(/*seq*/ 1, b"first copy".to_vec()).unwrap(),        Vec::<Vec<u8>>::new()    );    assert_eq!(        frames.push(/*seq*/ 1, b"replacement".to_vec()).unwrap(),        Vec::<Vec<u8>>::new()    );    assert_eq!(        frames.push(/*seq*/ 0, b"zero".to_vec()).unwrap(),        vec![b"zero".to_vec(), b"first copy".to_vec()]    );    assert_eq!(        frames.push(/*seq*/ 0, b"duplicate".to_vec()).unwrap(),        Vec::<Vec<u8>>::new()    );}#[test]fn rejects_unbounded_reordering() {    let mut frames = OrderedCiphertextFrames::default();    assert!(frames.push(/*seq*/ 65, Vec::new()).is_err());    assert!(        frames            .push(/*seq*/ 1, vec![0; MAX_PENDING_BYTES + 1])            .is_err()    );}