test: refactor test cases

This commit is contained in:
2025-11-20 09:47:43 +01:00
parent 80707a055d
commit 4b9e04ff75
3 changed files with 67 additions and 242 deletions
+21 -70
View File
@@ -5,108 +5,59 @@
use arc_core::ffi::point::Point;
// Safe wrapper tests
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn point_creation() {
let p = Point::new(1.0, 2.0, -3.0).expect("Failed to create point");
let coords = p.coordinates();
assert_eq!(coords, (1.0, 2.0, -3.0));
fn creation_and_query() {
let p = Point::new(1.0, 2.0, -3.0).expect("Safe creation failed");
assert_eq!(p.coordinates(), (1.0, 2.0, -3.0));
}
#[test]
fn point_query() {
let p = Point::new(5.5, 3.15, -0.001).expect("Failed to create point");
let coords = p.coordinates();
assert_eq!(coords, (5.5, 3.15, -0.001));
fn manual_deletion() {
let p = Point::new(1.0, 2.0, 3.0).expect("Creation failed");
p.delete().expect("Manual deletion failed");
}
#[test]
fn point_deletion() {
let p = Point::new(1.0, 2.0, 3.0).expect("Failed to create point");
let result = p.delete();
assert!(result.is_ok(), "Deletion should succeed for valid point");
}
#[test]
fn point_creation_extreme_values() {
let cases = [
(f64::MAX, f64::MIN, 0.0),
(0.0, 0.0, 0.0),
(-f64::MAX, -f64::MIN, f64::EPSILON),
];
for (x, y, z) in cases {
let p = Point::new(x, y, z).expect("Failed to create point with extreme values");
let coords = p.coordinates();
assert_eq!(coords, (x, y, z));
p.delete().expect("Failed to delete point");
}
}
#[test]
fn point_coordinates_immutability() {
let p = Point::new(1.5, 2.5, 3.5).expect("Failed to create point");
let coords1 = p.coordinates();
let coords2 = p.coordinates();
let coords3 = p.coordinates();
assert_eq!(coords1, coords2);
assert_eq!(coords2, coords3);
assert_eq!(coords1, (1.5, 2.5, 3.5));
}
#[test]
fn point_automatic_cleanup_on_drop() {
fn automatic_cleanup() {
let coords = {
let p = Point::new(7.0, 8.0, 9.0).expect("Failed to create point");
let p = Point::new(7.0, 8.0, 9.0).expect("Creation failed");
p.coordinates()
};
assert_eq!(coords, (7.0, 8.0, 9.0));
// Verify we can still create points after automatic cleanup
let p2 = Point::new(10.0, 11.0, 12.0).expect("Failed to create point after drop");
assert_eq!(p2.coordinates(), (10.0, 11.0, 12.0));
}
#[test]
fn point_multiple_instances_independent() {
let p1 = Point::new(1.0, 1.0, 1.0).expect("Failed to create point 1");
let p2 = Point::new(2.0, 2.0, 2.0).expect("Failed to create point 2");
let p3 = Point::new(3.0, 3.0, 3.0).expect("Failed to create point 3");
fn multiple_instances() {
let p1 = Point::new(1.0, 1.0, 1.0).expect("Creation failed");
let p2 = Point::new(2.0, 2.0, 2.0).expect("Creation failed");
assert_eq!(p1.coordinates(), (1.0, 1.0, 1.0));
assert_eq!(p2.coordinates(), (2.0, 2.0, 2.0));
assert_eq!(p3.coordinates(), (3.0, 3.0, 3.0));
p2.delete().expect("Failed to delete p2");
p1.delete().expect("Failed to delete p1");
p3.delete().expect("Failed to delete p3");
}
#[test]
fn point_debug_format() {
let p = Point::new(1.1, 2.2, 3.3).expect("Failed to create point");
fn debug_format() {
let p = Point::new(1.1, 2.2, 3.3).expect("Creation failed");
let debug_output = format!("{:?}", p);
assert!(debug_output.contains("Point"));
assert!(debug_output.starts_with("Point("));
assert!(debug_output.contains("1.1"));
assert!(debug_output.contains("2.2"));
assert!(debug_output.contains("3.3"));
}
#[test]
fn point_rapid_creation_deletion_cycle_stress_test() {
for i in 0..100 {
let p = Point::new(i as f64, i as f64, i as f64)
.expect(&format!("Failed to create point in iteration {}", i));
assert_eq!(p.coordinates(), (i as f64, i as f64, i as f64));
p.delete()
.expect(&format!("Failed to delete point in iteration {}", i));
fn boundary_values() {
let cases = [(0.0, 0.0, 0.0), (f64::MAX, f64::MIN, 0.0)];
for (x, y, z) in cases {
let p = Point::new(x, y, z).expect("Creation with boundary values failed");
assert_eq!(p.coordinates(), (x, y, z));
}
}
}