#![cfg(not(loom))]

use interchange::Interchange;

#[test]
fn tests() {
    let interchange: Interchange<u64, u32, 10> = Interchange::new();
    let mut holder = Vec::new();
    for _ in 0..10 {
        holder.push(interchange.claim().unwrap());
    }

    assert!(interchange.claim().is_none());
    holder.clear();
    for _ in 0..10 {
        holder.push(interchange.claim().unwrap());
    }
    assert!(interchange.claim().is_none());

    holder.clear();
    for _ in 0..5 {
        holder.push(interchange.claim().unwrap());
    }
    holder.clear();
    for _ in 0..10 {
        holder.push(interchange.claim().unwrap());
    }
    assert!(interchange.claim().is_none());
}