test_exts/
test_exts.rs

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}