mirror of
https://github.com/callumio/suck.git
synced 2026-03-21 22:18:10 +00:00
test: set_mut tests
This commit is contained in:
parent
4c4fa2b30a
commit
3e8a541daa
3 changed files with 96 additions and 0 deletions
|
|
@ -132,6 +132,38 @@ mod tests {
|
|||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mut_closure_value() {
|
||||
let (sucker, sourcer) = CrossbeamSuck::<i32>::pair();
|
||||
|
||||
// Start producer
|
||||
let producer_handle = std::thread::spawn(move || {
|
||||
let mut count = 0;
|
||||
sourcer
|
||||
.set_mut(move || {
|
||||
count += 1;
|
||||
count
|
||||
})
|
||||
.unwrap();
|
||||
sourcer.run().unwrap();
|
||||
});
|
||||
|
||||
// Ensure consumer gets incrementing values from the mutable closure
|
||||
let value1 = sucker.get().unwrap();
|
||||
assert_eq!(value1, 1);
|
||||
|
||||
let value2 = sucker.get().unwrap();
|
||||
assert_eq!(value2, 2);
|
||||
|
||||
let value3 = sucker.get().unwrap();
|
||||
assert_eq!(value3, 3);
|
||||
|
||||
// Close consumer
|
||||
sucker.close().unwrap();
|
||||
|
||||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_source_error() {
|
||||
let (sucker, sourcer) = CrossbeamSuck::<i32>::pair();
|
||||
|
|
|
|||
|
|
@ -133,6 +133,38 @@ mod tests {
|
|||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mut_closure_value() {
|
||||
let (sucker, sourcer) = FlumeSuck::<i32>::pair();
|
||||
|
||||
// Start producer
|
||||
let producer_handle = std::thread::spawn(move || {
|
||||
let mut count = 0;
|
||||
sourcer
|
||||
.set_mut(move || {
|
||||
count += 1;
|
||||
count
|
||||
})
|
||||
.unwrap();
|
||||
sourcer.run().unwrap();
|
||||
});
|
||||
|
||||
// Ensure consumer gets incrementing values from the mutable closure
|
||||
let value1 = sucker.get().unwrap();
|
||||
assert_eq!(value1, 1);
|
||||
|
||||
let value2 = sucker.get().unwrap();
|
||||
assert_eq!(value2, 2);
|
||||
|
||||
let value3 = sucker.get().unwrap();
|
||||
assert_eq!(value3, 3);
|
||||
|
||||
// Close consumer
|
||||
sucker.close().unwrap();
|
||||
|
||||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_source_error() {
|
||||
let (sucker, sourcer) = FlumeSuck::<i32>::pair();
|
||||
|
|
|
|||
|
|
@ -131,6 +131,38 @@ mod tests {
|
|||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mut_closure_value() {
|
||||
let (sucker, sourcer) = StdSuck::<i32>::pair();
|
||||
|
||||
// Start producer
|
||||
let producer_handle = std::thread::spawn(move || {
|
||||
let mut count = 0;
|
||||
sourcer
|
||||
.set_mut(move || {
|
||||
count += 1;
|
||||
count
|
||||
})
|
||||
.unwrap();
|
||||
sourcer.run().unwrap();
|
||||
});
|
||||
|
||||
// Ensure consumer gets incrementing values from the mutable closure
|
||||
let value1 = sucker.get().unwrap();
|
||||
assert_eq!(value1, 1);
|
||||
|
||||
let value2 = sucker.get().unwrap();
|
||||
assert_eq!(value2, 2);
|
||||
|
||||
let value3 = sucker.get().unwrap();
|
||||
assert_eq!(value3, 3);
|
||||
|
||||
// Close consumer
|
||||
sucker.close().unwrap();
|
||||
|
||||
producer_handle.join().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_source_error() {
|
||||
let (sucker, sourcer) = StdSuck::<i32>::pair();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue