use std::{self, thread, time::Duration};

use readlock::Shared;

mod lite;

#[test]
fn parallel_read_write() {
    let mut shared = Shared::new(1);
    let readlock = Shared::get_read_lock(&shared);

    let join_handle = thread::spawn(move || while *readlock.lock() < 1024 {});
    thread::sleep(Duration::from_millis(5));
    for _ in 0..10 {
        let value: i32 = *shared;
        *Shared::lock(&mut shared) += value;
    }

    thread::sleep(Duration::from_millis(5));
    assert!(join_handle.is_finished());
}
