easy_safe/
lib.rs

1/// easy_safe
2/// yes it is not easy_save since this crate also wants to be safe to use while saving I called
3/// it easy_safe
4///
5/// This is a crate that should make it possible to save and load strings with keys from disk
6/// It works as a map and actually wraps a map
7/// It keeps the ownership model as you know it
8/// but you may always call create_or_load_map_env("somename")
9/// at any place in your code, with the same name it was first being called
10/// This makes it possible to leak data through places where the data should not be
11/// as you can imagine, you should be careful to not trying to use multiple environments concurrently
12
13
14/// # Example
15/// ```
16/// use easy_safe::{create_or_load_map_env, MapEnv};
17///
18/// let mut  map_env: MapEnv = create_or_load_map_env("somename");
19/// map_env.put("somekey", "somevalue");
20/// let value = map_env.get("somekey").unwrap();
21/// assert_eq!(value, "somevalue");
22/// ```
23
24
25/// map environment
26mod mapenv;
27pub use crate::mapenv::disk_pers::{create_or_load_map_env, MapEnv, create_or_load_late_save_map_env, LateSaveMapEnv};
28
29extern crate core;
30
31#[cfg(test)]
32mod tests {
33    use std::fs;
34    use crate::{create_or_load_late_save_map_env, LateSaveMapEnv};
35    use crate::mapenv::disk_pers::{create_or_load_map_env, MapEnv};
36
37    fn clear_files(name: &str) {
38        if fs::remove_file(name).is_ok() {};
39    }
40
41    #[test]
42    fn create_env_and_check_name() {
43        let map_env: MapEnv = create_or_load_map_env("name1");
44        assert_eq!(map_env.get_name(), "name1");
45        clear_files("name1");
46    }
47
48    #[test]
49    fn create_env_put_and_get() {
50        let mut map_env: MapEnv = create_or_load_map_env("name2");
51        map_env.put("somekey", "somevalue");
52        let value = map_env.get("somekey").unwrap();
53        assert_eq!(value, "somevalue");
54        clear_files("name2");
55    }
56
57    #[test]
58    fn create_env_put_and_delete() {
59        let mut map_env: MapEnv = create_or_load_map_env("name4");
60        map_env.put("somekey", "somevalue");
61        map_env.delete("somekey");
62        let value = map_env.get("somekey");
63        assert_eq!(value, None);
64        clear_files("name4");
65    }
66
67    #[test]
68    fn create_env_and_check_name_with_late_save() {
69        let map_env: LateSaveMapEnv = create_or_load_late_save_map_env("name6");
70        assert_eq!(map_env.get_name(), "name6");
71        clear_files("name6");
72    }
73
74    #[test]
75    fn create_env_put_and_get_with_late_save() {
76        let mut map_env: LateSaveMapEnv = create_or_load_late_save_map_env("name7");
77        map_env.put("somekey", "somevalue");
78        map_env.save();
79
80        let mut new_map_env_instance: LateSaveMapEnv = create_or_load_late_save_map_env("name7");
81
82        let value = new_map_env_instance.get("somekey").unwrap();
83        assert_eq!(value, "somevalue");
84        clear_files("name7");
85    }
86
87    #[test]
88    fn create_env_put_and_get_with_late_save_without_saving_to_disk() {
89        let mut map_env: LateSaveMapEnv = create_or_load_late_save_map_env("name8");
90        map_env.put("somekey", "somevalue");
91        /// map_env.save();
92
93        let mut new_map_env_instance: LateSaveMapEnv = create_or_load_late_save_map_env("name8");
94
95        let value = new_map_env_instance.get("somekey");
96        assert_eq!(value, None);
97        clear_files("name8");
98    }
99
100
101}
102
103