1pub mod models;
2pub mod utils;
3pub mod types;
4
5
6#[cfg(test)]
7mod tests {
8 use crate::models::{SunspecModels, Models, Model, SunspecID};
9 use crate::types::{SunspecTypes, DataTypes};
10
11 #[test]
12 fn convert_model() {
13 let mut new_model = Models::new();
14
15 new_model.models.push(Model::new(1));
16 new_model.models.push(Model::new(213));
17 new_model.models.push(Model::new(65535));
18
19 let idx = new_model.get_model_index(1).unwrap();
20 new_model.models[idx].update_data("Mn", &DataTypes::new_string("Manufactor teste"));
21 new_model.models[idx].update_data("Md", &DataTypes::new_string("Model"));
22 new_model.models[idx].update_data("Ver", &DataTypes::new_string("ABCD1234"));
23 new_model.models[idx].update_data("Opt", &DataTypes::new_string("Options"));
24
25 let idx = new_model.get_model_index(213).unwrap();
26 new_model.models[idx].update_data("A", &DataTypes::new_f32(12.5));
27 new_model.models[idx].update_data("Hz", &DataTypes::new_f32(60.05));
28 new_model.models[idx].update_data("PF", &DataTypes::new_f32(0.92));
29
30 new_model.compute_addr();
31
32 let mut registers: Vec<u16> = new_model.id.into();
33 for model in new_model.models.iter() {
34 let model_tmp = model.clone();
35 registers.extend(Vec::<u16>::from(model_tmp));
36 }
37
38 println!("{:?}", registers);
39 assert_eq!(registers[72], 16712);
40 }
41
42 #[test]
43 fn update_model() {
44 let mut new_model = Models::new();
45
46 new_model.models.push(Model::new(213));
47
48 new_model.models[0].update_data("A", &DataTypes::new_f32(12.5));
49 new_model.models[0].update_data("Hz", &DataTypes::new_f32(60.05));
50 new_model.models[0].update_data("PF", &DataTypes::new_f32(0.92));
51
52 assert_eq!(new_model.models[0].get_f32("Hz").unwrap(), 60.05);
53
54 if let Some(a_idx) = new_model.models[0].get_data_index("Hz") {
55 new_model.models[0].update_data_by_index(a_idx, &DataTypes::new_f32(60.08));
56 assert_eq!(new_model.models[0].get_f32("Hz").unwrap(), 60.08);
57 }
58 }
59
60 #[test]
61 fn convert_sunspec_id() {
62 let id_vec: Vec<u16> = vec![21365, 28243];
63
64 let id: SunspecID = id_vec.into();
65
66 println!("{:?}", id);
67 assert_eq!(id.id[0], 'S' as u8);
68 assert_eq!(id.id[1], 'u' as u8);
69 assert_eq!(id.id[2], 'n' as u8);
70 assert_eq!(id.id[3], 'S' as u8);
71 }
72}