100-exercises-to-learn-rust/exercises/07_threads/12_rw_lock/tests/check.rs

32 lines
885 B
Rust
Raw Normal View History

2024-05-13 04:21:03 +08:00
use rwlock::data::{Status, TicketDraft};
use rwlock::launch;
use ticket_fields::test_helpers::{ticket_description, ticket_title};
#[test]
fn works() {
let client = launch(5);
let draft = TicketDraft {
title: ticket_title(),
description: ticket_description(),
};
let ticket_id = client.insert(draft.clone()).unwrap();
let ticket = client.get(ticket_id).unwrap().unwrap();
let lock1 = ticket.read().unwrap();
{
let ticket = ticket.read().unwrap();
assert_eq!(ticket_id, ticket.id);
assert_eq!(ticket.status, Status::ToDo);
assert_eq!(ticket.title, draft.title);
assert_eq!(ticket.description, draft.description);
}
drop(lock1);
let ticket = client.get(ticket_id).unwrap().unwrap();
{
let ticket = ticket.write().unwrap();
*ticket.status = Status::InProgress;
}
}