test: set_mut tests

This commit is contained in:
Callum Leslie 2026-03-04 20:21:04 +00:00
parent 4c4fa2b30a
commit 3e8a541daa
3 changed files with 96 additions and 0 deletions

View file

@ -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();

View file

@ -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();

View file

@ -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();