session_rust/
vector_test.rs1#[cfg(test)]
2mod tests {
3 use crate::Vector;
4 use std::fs;
5
6 #[test]
7 fn test_vector_constructor() {
8 let vector = Vector::new(1.0, 2.0, 3.0);
9 assert!(!vector.guid.to_string().is_empty());
10 assert_eq!(vector.x, 1.0);
11 assert_eq!(vector.y, 2.0);
12 assert_eq!(vector.z, 3.0);
13 }
14
15 #[test]
16 fn test_vector_equality() {
17 let v1 = Vector::new(1.0, 2.0, 3.0);
18 let mut v2 = Vector::new(1.0, 2.0, 3.0);
19
20 v2.guid = v1.guid.clone();
22 v2.name = v1.name.clone();
23 assert_eq!(v1, v2);
24 assert!(!(v1 != v2));
25
26 let v3 = Vector::new(1.0, 2.0, 3.0);
27 let mut v4 = Vector::new(1.1, 2.0, 3.0);
28 v4.guid = v3.guid.clone();
29 v4.name = v3.name.clone();
30 assert_ne!(v3, v4);
31 assert!(v3 != v4);
32 }
33
34 #[test]
35 fn test_vector_to_json_data() {
36 let mut vector = Vector::new(10.5, 20.7, 30.9);
37 vector.name = "force_vector_X".to_string();
38
39 let json_result = vector.to_json_data();
40 assert!(json_result.is_ok());
41
42 let json_data = json_result.unwrap();
43 assert!(json_data.contains("\"type\": \"Vector\""));
44 assert!(json_data.contains("\"name\": \"force_vector_X\""));
45 assert!(json_data.contains("\"x\": 10.5"));
46 assert!(json_data.contains("\"y\": 20.7"));
47 assert!(json_data.contains("\"z\": 30.9"));
48 assert!(json_data.contains("\"guid\""));
49 }
50
51 #[test]
52 fn test_vector_from_json_data() {
53 let original_vector = Vector::new(45.1, 67.8, 89.2);
54 let json_data = original_vector.to_json_data().unwrap();
55 let restored_vector = Vector::from_json_data(&json_data).unwrap();
56
57 assert_eq!(restored_vector.x, 45.1);
58 assert_eq!(restored_vector.y, 67.8);
59 assert_eq!(restored_vector.z, 89.2);
60 assert_eq!(restored_vector.guid, original_vector.guid);
61 }
62
63 #[test]
64 fn test_vector_to_json_from_json() {
65 let original = Vector::new(100.25, 200.50, 300.75);
66 let filename = "test_vector.json";
67
68 let save_result = original.to_json(filename);
70 assert!(save_result.is_ok());
71
72 let loaded_result = Vector::from_json(filename);
74 assert!(loaded_result.is_ok());
75
76 let loaded = loaded_result.unwrap();
77 assert_eq!(loaded.x, original.x);
78 assert_eq!(loaded.y, original.y);
79 assert_eq!(loaded.z, original.z);
80 assert_eq!(loaded.name, original.name);
81 assert_eq!(loaded.guid, original.guid);
82
83 let _ = fs::remove_file(filename);
85 }
86
87 #[test]
88 fn test_vector_default() {
89 let vector = Vector::default();
90 assert_eq!(vector.x, 0.0);
91 assert_eq!(vector.y, 0.0);
92 assert_eq!(vector.z, 0.0);
93 assert!(!vector.guid.to_string().is_empty());
94 assert_eq!(vector.name, "my_vector");
95 }
96
97 #[test]
98 fn test_vector_display() {
99 let vector = Vector::new(1.5, 2.5, 3.5);
100 let display_string = format!("{vector}");
101 assert!(display_string.contains("Vector("));
102 assert!(display_string.contains("1.5"));
103 assert!(display_string.contains("2.5"));
104 assert!(display_string.contains("3.5"));
105 assert!(display_string.contains(&vector.guid.to_string()));
106 assert!(display_string.contains(&vector.name));
107 }
108}