summaryrefslogtreecommitdiff
path: root/crates/utils
diff options
context:
space:
mode:
Diffstat (limited to 'crates/utils')
-rw-r--r--crates/utils/cfg_file/cfg_file_example/Cargo.toml10
-rw-r--r--crates/utils/cfg_file/cfg_file_test/Cargo.toml9
-rw-r--r--crates/utils/cfg_file/cfg_file_test/src/lib.rs52
3 files changed, 61 insertions, 10 deletions
diff --git a/crates/utils/cfg_file/cfg_file_example/Cargo.toml b/crates/utils/cfg_file/cfg_file_example/Cargo.toml
deleted file mode 100644
index 932bc31..0000000
--- a/crates/utils/cfg_file/cfg_file_example/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "cfg_file_example"
-edition = "2024"
-version.workspace = true
-
-[dependencies]
-cfg_file = { path = "../../cfg_file" }
-cfg_file_derive = { path = "../cfg_file_derive" }
-tokio = { version = "1.46.1", features = ["full"] }
-serde = { version = "1.0.219", features = ["derive"] } \ No newline at end of file
diff --git a/crates/utils/cfg_file/cfg_file_test/Cargo.toml b/crates/utils/cfg_file/cfg_file_test/Cargo.toml
new file mode 100644
index 0000000..73e580b
--- /dev/null
+++ b/crates/utils/cfg_file/cfg_file_test/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "cfg_file_test"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+cfg_file = { path = "../../cfg_file", features = ["default"] }
+tokio = { version = "1.46.1", features = ["full"] }
+serde = { version = "1.0.219", features = ["derive"] } \ No newline at end of file
diff --git a/crates/utils/cfg_file/cfg_file_test/src/lib.rs b/crates/utils/cfg_file/cfg_file_test/src/lib.rs
new file mode 100644
index 0000000..ea490c9
--- /dev/null
+++ b/crates/utils/cfg_file/cfg_file_test/src/lib.rs
@@ -0,0 +1,52 @@
+pub fn add(left: u64, right: u64) -> u64 {
+ left + right
+}
+
+#[cfg(test)]
+mod test_cfg_file {
+ use std::collections::HashMap;
+ use serde::{Deserialize, Serialize};
+ use cfg_file::config::ConfigFile;
+ use cfg_file::ConfigFile;
+
+ #[derive(ConfigFile, Deserialize, Serialize, Default)]
+ #[cfg_file(path = "./.temp/example_cfg.toml")]
+ struct ExampleConfig {
+ name: String,
+ age: i32,
+ hobby: Vec<String>,
+ secret: HashMap<String, String>,
+ }
+
+ #[tokio::test]
+ async fn test_config_file_serialization() {
+ let mut example = ExampleConfig {
+ name: "Weicao".to_string(),
+ age: 22,
+ hobby: vec![ "Programming", "Painting" ]
+ .iter()
+ .map(|m| m.to_string())
+ .collect(),
+ secret: HashMap::new()
+ };
+ let secret_no_comments = "Actually, I'm really too lazy to write comments, documentation, and unit tests.";
+ example.secret
+ .entry("No comments".to_string())
+ .insert_entry(secret_no_comments.to_string());
+
+ let secret_peek = "Of course, it's peeking at you who's reading the source code.";
+ example.secret
+ .entry("Peek".to_string())
+ .insert_entry(secret_peek.to_string());
+
+ ExampleConfig::write(&example).await; // Write to default path.
+
+ // Read from default path.
+ let read_cfg = ExampleConfig::read().await;
+ assert_eq!(read_cfg.name, "Weicao");
+ assert_eq!(read_cfg.age, 22);
+ assert_eq!(read_cfg.hobby, vec![ "Programming", "Painting" ]);
+ assert_eq!(read_cfg.secret["No comments"], secret_no_comments);
+ assert_eq!(read_cfg.secret["Peek"], secret_peek);
+ }
+} \ No newline at end of file