diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-09-12 02:16:18 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2025-09-12 02:16:18 +0800 |
| commit | 382cc8d67219adba24d04af029ad6a61824930f5 (patch) | |
| tree | 01674bf2d4fff0b6629f68d8787c06f1e8ab4aaf | |
| parent | 0d385d0ddf650272bb1a50beeda6a321ad8ae7e0 (diff) | |
Add test `cfg_file_test`
| -rw-r--r-- | crates/utils/cfg_file/cfg_file_example/Cargo.toml | 10 | ||||
| -rw-r--r-- | crates/utils/cfg_file/cfg_file_test/Cargo.toml | 9 | ||||
| -rw-r--r-- | crates/utils/cfg_file/cfg_file_test/src/lib.rs | 52 |
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 |
