session_rust/
point_test.rs1#[cfg(test)]
2mod tests {
3 use crate::{Color, Point};
4
5 #[test]
6 fn test_point_constructor() {
7 let point = Point::new(1.0, 2.0, 3.0);
8 assert_eq!(point.name, "my_point");
9 assert!(!point.guid.to_string().is_empty());
10 assert_eq!(point.x, 1.0);
11 assert_eq!(point.y, 2.0);
12 assert_eq!(point.z, 3.0);
13 assert_eq!(point.width, 1.0);
14 assert_eq!(point.pointcolor.r, Color::white().r);
15 assert_eq!(point.pointcolor.g, Color::white().g);
16 assert_eq!(point.pointcolor.b, Color::white().b);
17 assert_eq!(point.pointcolor.a, Color::white().a);
18 }
19
20 #[test]
21 fn test_point_equality() {
22 let p1 = Point::new(1.0, 2.0, 3.0);
23 let p2 = Point::new(1.0, 2.0, 3.0);
24 assert_eq!(p1.x, p2.x);
27 assert_eq!(p1.y, p2.y);
28 assert_eq!(p1.z, p2.z);
29
30 let p3 = Point::new(1.0, 2.0, 3.0);
31 let p4 = Point::new(1.1, 2.0, 3.0);
32 assert_ne!(p3.x, p4.x);
33 }
34
35 #[test]
36 fn test_point_to_json_data() {
37 let mut point = Point::new(15.5, 25.7, 35.9);
38 point.name = "survey_point_A".to_string();
39 point.width = 2.5;
40 point.pointcolor = Color::new(255, 128, 64, 255);
41
42 let json_string = point.to_json_data().unwrap();
43 let data: serde_json::Value = serde_json::from_str(&json_string).unwrap();
44
45 assert_eq!(data["type"], "Point");
46 assert_eq!(data["name"], "survey_point_A");
47 assert_eq!(data["x"], 15.5);
48 assert_eq!(data["y"], 25.7);
49 assert_eq!(data["z"], 35.9);
50 assert_eq!(data["width"], 2.5);
51 assert_eq!(data["pointcolor"]["r"], 255);
52 assert_eq!(data["pointcolor"]["g"], 128);
53 assert_eq!(data["pointcolor"]["b"], 64);
54 assert_eq!(data["pointcolor"]["a"], 255);
55 assert!(data["guid"].is_string());
56 }
57
58 #[test]
59 fn test_point_from_json_data() {
60 let mut original_point = Point::new(42.1, 84.2, 126.3);
61 original_point.name = "control_point_B".to_string();
62 original_point.width = 3.0;
63 original_point.pointcolor = Color::new(200, 100, 50, 255);
64
65 let json_string = original_point.to_json_data().unwrap();
66 let restored_point = Point::from_json_data(&json_string).unwrap();
67
68 assert_eq!(restored_point.x, 42.1);
69 assert_eq!(restored_point.y, 84.2);
70 assert_eq!(restored_point.z, 126.3);
71 assert_eq!(restored_point.name, "control_point_B");
72 assert_eq!(restored_point.width, 3.0);
73 assert_eq!(restored_point.pointcolor.r, 200);
74 assert_eq!(restored_point.pointcolor.g, 100);
75 assert_eq!(restored_point.pointcolor.b, 50);
76 assert_eq!(restored_point.pointcolor.a, 255);
77 assert_eq!(restored_point.guid, original_point.guid);
78 }
79
80 #[test]
81 fn test_point_to_json_from_json() {
82 let mut original = Point::new(123.45, 678.90, 999.11);
83 original.name = "file_test_point".to_string();
84 original.width = 4.5;
85 original.pointcolor = Color::new(0, 255, 128, 255);
86 let filename = "test_point.json";
87
88 original.to_json(filename).unwrap();
89 let loaded = Point::from_json(filename).unwrap();
90
91 assert_eq!(loaded.x, original.x);
92 assert_eq!(loaded.y, original.y);
93 assert_eq!(loaded.z, original.z);
94 assert_eq!(loaded.name, original.name);
95 assert_eq!(loaded.width, original.width);
96 assert_eq!(loaded.pointcolor.r, original.pointcolor.r);
97 assert_eq!(loaded.pointcolor.g, original.pointcolor.g);
98 assert_eq!(loaded.pointcolor.b, original.pointcolor.b);
99 assert_eq!(loaded.pointcolor.a, original.pointcolor.a);
100 assert_eq!(loaded.guid, original.guid);
101 }
102}