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();
|
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]
|
#[test]
|
||||||
fn test_no_source_error() {
|
fn test_no_source_error() {
|
||||||
let (sucker, sourcer) = CrossbeamSuck::<i32>::pair();
|
let (sucker, sourcer) = CrossbeamSuck::<i32>::pair();
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,38 @@ mod tests {
|
||||||
producer_handle.join().unwrap();
|
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]
|
#[test]
|
||||||
fn test_no_source_error() {
|
fn test_no_source_error() {
|
||||||
let (sucker, sourcer) = FlumeSuck::<i32>::pair();
|
let (sucker, sourcer) = FlumeSuck::<i32>::pair();
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,38 @@ mod tests {
|
||||||
producer_handle.join().unwrap();
|
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]
|
#[test]
|
||||||
fn test_no_source_error() {
|
fn test_no_source_error() {
|
||||||
let (sucker, sourcer) = StdSuck::<i32>::pair();
|
let (sucker, sourcer) = StdSuck::<i32>::pair();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue