Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/ringbuf/src/tests/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  multiple.rs   Sprache: unbekannt

 
Spracherkennung für: .rs vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

use crate::RingBuffer;

#[test]
fn for_each() {
    let cap = 2;
    let buf = RingBuffer::<i32>::new(cap);
    let (mut prod, mut cons) = buf.split();

    prod.push(10).unwrap();
    prod.push(20).unwrap();

    let mut sum_1 = 0;
    for v in cons.iter() {
        sum_1 += *v;
    }

    let first = cons.pop().expect("First element not available");
    let second = cons.pop().expect("Second element not available");

    assert_eq!(sum_1, first + second);
}

#[test]
fn for_each_mut() {
    let cap = 2;
    let buf = RingBuffer::<i32>::new(cap);
    let (mut prod, mut cons) = buf.split();

    prod.push(10).unwrap();
    prod.push(20).unwrap();

    for v in cons.iter_mut() {
        *v *= 2;
    }

    let mut sum_1 = 0;
    for v in cons.iter_mut() {
        sum_1 += *v;
    }

    let first = cons.pop().expect("First element not available");
    let second = cons.pop().expect("Second element not available");

    assert_eq!(sum_1, first + second);
}

#[test]
fn pop_each() {
    let cap = 3;
    let buf = RingBuffer::<i32>::new(cap);
    let (mut prod, mut cons) = buf.split();

    prod.push(10).unwrap();
    prod.push(20).unwrap();

    let mut sum_1 = 0;
    cons.pop_each(
        |v| {
            sum_1 += v;
            v != 20
        },
        Some(2),
    );

    prod.push(30).unwrap();
    prod.push(40).unwrap();
    prod.push(50).unwrap();

    cons.pop_each(
        |v| {
            sum_1 += v;
            true
        },
        Some(2),
    );

    prod.push(60).unwrap();

    cons.pop_each(
        |v| {
            sum_1 += v;
            v != 50
        },
        None,
    );

    prod.push(70).unwrap();

    cons.pop_each(
        |v| {
            sum_1 += v;
            true
        },
        Some(2),
    );

    assert_eq!(sum_1, 10 + 20 + 30 + 40 + 50 + 60 + 70);
}

#[test]
fn push_pop_slice() {
    let buf = RingBuffer::<i32>::new(4);
    let (mut prod, mut cons) = buf.split();

    let mut tmp = [05];

    assert_eq!(prod.push_slice(&[]), 0);
    assert_eq!(prod.push_slice(&[012]), 3);

    assert_eq!(cons.pop_slice(&mut tmp[0..2]), 2);
    assert_eq!(tmp[0..2], [01]);

    assert_eq!(prod.push_slice(&[34]), 2);
    assert_eq!(prod.push_slice(&[56]), 1);

    assert_eq!(cons.pop_slice(&mut tmp[0..3]), 3);
    assert_eq!(tmp[0..3], [234]);

    assert_eq!(prod.push_slice(&[6789]), 3);

    assert_eq!(cons.pop_slice(&mut tmp), 4);
    assert_eq!(tmp[0..4], [5678]);
}

#[test]
fn move_slice() {
    let buf0 = RingBuffer::<i32>::new(4);
    let buf1 = RingBuffer::<i32>::new(4);
    let (mut prod0, mut cons0) = buf0.split();
    let (mut prod1, mut cons1) = buf1.split();

    let mut tmp = [05];

    assert_eq!(prod0.push_slice(&[012]), 3);

    assert_eq!(prod1.move_from(&mut cons0, None), 3);
    assert_eq!(prod1.move_from(&mut cons0, None), 0);

    assert_eq!(cons1.pop_slice(&mut tmp), 3);
    assert_eq!(tmp[0..3], [012]);

    assert_eq!(prod0.push_slice(&[345]), 3);

    assert_eq!(prod1.move_from(&mut cons0, None), 3);

    assert_eq!(cons1.pop_slice(&mut tmp), 3);
    assert_eq!(tmp[0..3], [345]);

    assert_eq!(prod1.push_slice(&[678]), 3);
    assert_eq!(prod0.push_slice(&[910]), 2);

    assert_eq!(prod1.move_from(&mut cons0, None), 1);
    assert_eq!(prod1.move_from(&mut cons0, None), 0);

    assert_eq!(cons1.pop_slice(&mut tmp), 4);
    assert_eq!(tmp[0..4], [6789]);
}

#[test]
fn move_slice_count() {
    let buf0 = RingBuffer::<i32>::new(4);
    let buf1 = RingBuffer::<i32>::new(4);
    let (mut prod0, mut cons0) = buf0.split();
    let (mut prod1, mut cons1) = buf1.split();

    let mut tmp = [05];

    assert_eq!(prod0.push_slice(&[012]), 3);

    assert_eq!(prod1.move_from(&mut cons0, Some(2)), 2);

    assert_eq!(cons1.pop_slice(&mut tmp), 2);
    assert_eq!(tmp[0..2], [01]);

    assert_eq!(prod1.move_from(&mut cons0, Some(2)), 1);

    assert_eq!(cons1.pop_slice(&mut tmp), 1);
    assert_eq!(tmp[0..1], [2]);

    assert_eq!(prod0.push_slice(&[3456]), 4);

    assert_eq!(prod1.move_from(&mut cons0, Some(3)), 3);

    assert_eq!(cons1.pop_slice(&mut tmp), 3);
    assert_eq!(tmp[0..3], [345]);

    assert_eq!(prod0.push_slice(&[789]), 3);

    assert_eq!(prod1.move_from(&mut cons0, Some(5)), 4);

    assert_eq!(cons1.pop_slice(&mut tmp), 4);
    assert_eq!(tmp[0..4], [6789]);
}

[Dauer der Verarbeitung: 0.17 Sekunden, vorverarbeitet 2026-06-07]