Files
dagx/src/types/tests.rs
T

51 lines
1.2 KiB
Rust

//! Unit tests for types module
use crate::types::{NodeId, TaskHandle};
use std::marker::PhantomData;
#[test]
#[allow(clippy::clone_on_copy)]
fn test_task_handle_clone() {
let handle: TaskHandle<(i32,)> = TaskHandle {
id: NodeId(42),
_phantom: PhantomData,
};
// Test Clone implementation
let cloned = handle.clone();
assert_eq!(handle.id.0, cloned.id.0);
let handle2 = handle.clone();
let handle3 = handle2.clone();
assert_eq!(handle3.id.0, 42);
}
#[test]
fn test_task_handle_copy() {
let handle: TaskHandle<String> = TaskHandle {
id: NodeId(99),
_phantom: PhantomData,
};
// Test that TaskHandle implements Copy
let copied = handle;
let copied2 = handle; // This wouldn't compile if not Copy
assert_eq!(copied.id.0, 99);
assert_eq!(copied2.id.0, 99);
}
#[test]
fn test_task_handle_ref_from_conversion() {
// Test From<&TaskHandle<T>> for TaskHandle<T> (line 90-93)
let handle: TaskHandle<String> = TaskHandle {
id: NodeId(123),
_phantom: PhantomData,
};
let handle_ref = &handle;
let converted: TaskHandle<String> = handle_ref.into();
assert_eq!(converted.id.0, 123);
assert_eq!(handle.id, converted.id);
}