1use serde::{Serialize, Deserialize};
2use shm_rs::lexer::lexer;
3use shm_rs::serializator::serializator;
4use shm_rs::static_scheme::init;
5use shm_rs::dynamic_scheme::environment;
6
7#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
8pub struct ExtTest
9{
10 pub var_name: String,
11 pub entity: String,
12 pub title: String,
13}
14
15pub fn main()
16{
17 let mut curdir = std::env::current_dir().unwrap();
18 curdir.push("examples/scheme_extensions/test_exts.shm");
19 println!("{}", curdir.display());
20
21 let lex = lexer::Lexer::from_file(curdir).unwrap();
22 let schm = init::SchemeInit::new().unwrap();
23
24 let res = schm.run(None, &lex, None).unwrap();
25
26 let resser = res.get("test_exts").unwrap().clone();
27
28 println!("Static: \n{:?}\n", res);
29
30
31 let mut curdir = std::env::current_dir().unwrap();
32 curdir.push("examples/scheme_extensions/test_exts_data.shm");
33
34
35 let (_, dynres) = environment::DynEnvironment::from_file(curdir, resser.clone()).unwrap();
36
37 println!("Dynamic: \n{:?}\n", dynres);
38
39 let ret = serializator::Serialization::serialize(resser, dynres.clone()).unwrap();
40
41 let serialized = serde_json::to_string(&ret).unwrap();
42
43
44 let tr = ExtTest{ var_name: "var1".to_string(), entity: "od".to_string(), title: "model123".to_string() };
45
46 let res = serde_json::to_string(&tr).unwrap();
47
48 println!("control: {}", res);
49
50 let deser: ExtTest = serde_json::from_str(&serialized).unwrap();
51
52 println!("{:?}", deser);
53
54 if deser != tr
55 {
56 panic!("did not match!");
57 }
58 else
59 {
60 println!("matched!");
61 }
62}