Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  steal.rs   Sprache: unbekannt

 
use crossbeam_deque::Steal::Success;
use crossbeam_deque::{Injector, Worker};

#[test]
fn steal_fifo() {
    let w = Worker::new_fifo();
    for i in 1..=3 {
        w.push(i);
    }

    let s = w.stealer();
    assert_eq!(s.steal(), Success(1));
    assert_eq!(s.steal(), Success(2));
    assert_eq!(s.steal(), Success(3));
}

#[test]
fn steal_lifo() {
    let w = Worker::new_lifo();
    for i in 1..=3 {
        w.push(i);
    }

    let s = w.stealer();
    assert_eq!(s.steal(), Success(1));
    assert_eq!(s.steal(), Success(2));
    assert_eq!(s.steal(), Success(3));
}

#[test]
fn steal_injector() {
    let q = Injector::new();
    for i in 1..=3 {
        q.push(i);
    }

    assert_eq!(q.steal(), Success(1));
    assert_eq!(q.steal(), Success(2));
    assert_eq!(q.steal(), Success(3));
}

#[test]
fn steal_batch_fifo_fifo() {
    let w = Worker::new_fifo();
    for i in 1..=4 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_fifo();

    assert_eq!(s.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(1));
    assert_eq!(w2.pop(), Some(2));
}

#[test]
fn steal_batch_lifo_lifo() {
    let w = Worker::new_lifo();
    for i in 1..=4 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_lifo();

    assert_eq!(s.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(1));
}

#[test]
fn steal_batch_fifo_lifo() {
    let w = Worker::new_fifo();
    for i in 1..=4 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_lifo();

    assert_eq!(s.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(1));
    assert_eq!(w2.pop(), Some(2));
}

#[test]
fn steal_batch_lifo_fifo() {
    let w = Worker::new_lifo();
    for i in 1..=4 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_fifo();

    assert_eq!(s.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(1));
}

#[test]
fn steal_batch_injector_fifo() {
    let q = Injector::new();
    for i in 1..=4 {
        q.push(i);
    }

    let w2 = Worker::new_fifo();
    assert_eq!(q.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(1));
    assert_eq!(w2.pop(), Some(2));
}

#[test]
fn steal_batch_injector_lifo() {
    let q = Injector::new();
    for i in 1..=4 {
        q.push(i);
    }

    let w2 = Worker::new_lifo();
    assert_eq!(q.steal_batch(&w2), Success(()));
    assert_eq!(w2.pop(), Some(1));
    assert_eq!(w2.pop(), Some(2));
}

#[test]
fn steal_batch_and_pop_fifo_fifo() {
    let w = Worker::new_fifo();
    for i in 1..=6 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_fifo();

    assert_eq!(s.steal_batch_and_pop(&w2), Success(1));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(3));
}

#[test]
fn steal_batch_and_pop_lifo_lifo() {
    let w = Worker::new_lifo();
    for i in 1..=6 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_lifo();

    assert_eq!(s.steal_batch_and_pop(&w2), Success(3));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(1));
}

#[test]
fn steal_batch_and_pop_fifo_lifo() {
    let w = Worker::new_fifo();
    for i in 1..=6 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_lifo();

    assert_eq!(s.steal_batch_and_pop(&w2), Success(1));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(3));
}

#[test]
fn steal_batch_and_pop_lifo_fifo() {
    let w = Worker::new_lifo();
    for i in 1..=6 {
        w.push(i);
    }

    let s = w.stealer();
    let w2 = Worker::new_fifo();

    assert_eq!(s.steal_batch_and_pop(&w2), Success(3));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(1));
}

#[test]
fn steal_batch_and_pop_injector_fifo() {
    let q = Injector::new();
    for i in 1..=6 {
        q.push(i);
    }

    let w2 = Worker::new_fifo();
    assert_eq!(q.steal_batch_and_pop(&w2), Success(1));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(3));
}

#[test]
fn steal_batch_and_pop_injector_lifo() {
    let q = Injector::new();
    for i in 1..=6 {
        q.push(i);
    }

    let w2 = Worker::new_lifo();
    assert_eq!(q.steal_batch_and_pop(&w2), Success(1));
    assert_eq!(w2.pop(), Some(2));
    assert_eq!(w2.pop(), Some(3));
}

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge