## Me
> Context:
> - <buf>config.rs</buf>
> - <buf>lib.rs</buf>
> - <buf>main.rs</buf>
create unit test for #{buffers}
## CodeCompanion (OpenAI Compatible)
# Buffer Unit Tests
Here are comprehensive tests for the configuration system:
````rust {/Users/geraldo/museum/rust_placeholder/g-tools/src/lib.rs}
```
#[cfg(test)]
mod buffer_tests {
use super::*;
use std::sync::Mutex;
#[test]
fn test_config_initialization() {
// Test successful initialization
let initial_path = "test/index.txt".to_string();
initialize_mutable_config(initial_path.clone());
let config = MUTABLE_CONFIG.get().expect("Config should be initialized");
let config_data = config.lock().unwrap();
assert_eq!(config_data.index_txt_path, initial_path);
// Test initialization failure (already initialized)
let result = initialize_mutable_config("new/path.txt".to_string());
assert!(result.is_err());
assert!(matches!(result.err(), Some("Mutable config already initialized")));
}
#[test]
fn test_config_update() {
// Initialize first
let initial_path = "test/index.txt".to_string();
initialize_mutable_config(initial_path.clone());
// Update config
let new_path = "updated/test.index.txt".to_string();
update_index_txt_path(new_path.clone());
let config = MUTABLE_CONFIG.get().expect("Config should be initialized");
let config_data = config.lock().unwrap();
assert_eq!(config_data.index_txt_path, new_path);
}
#[test]
fn test_config_not_initialized() {
// Test access before initialization
let result = MUTABLE_CONFIG.get();
assert!(result.is_err());
assert!(matches!(result.err(), Some("Config not initialized")));
// Test update before initialization (should fail)
let initial_path = "test/index.txt".to_string();
update_index_txt_path(initial_path);
let result = MUTABLE_CONFIG.get();
assert!(result.is_err());
assert!(matches!(result.err(), Some("Config not initialized")));
}
#[test]
fn test_config_concurrency() {
// Test that concurrent updates work correctly
initialize_mutable_config("test/index.txt".to_string());
// Store config in thread-safe variable
let config = MUTABLE_CONFIG.get().expect("Config should be initialized");
// Update from multiple threads
std::thread::spawn({
let config = config.clone();
move || {
std::thread::sleep(std::time::Duration::from_millis(50));
update_index_txt_path("thread1/path.txt".to_string());
let data = config.lock().unwrap();
assert_eq!(data.index_txt_path, "thread1/path.txt");
}
});
std::thread::spawn({
let config = config.clone();
move || {
std::thread::sleep(std你有什么需要我继续测试的?可以告诉我具体想验证哪个功能或场景。
## Me
> Context:
> - <buf>config.rs</buf>
> - <buf>lib.rs</buf>
> - <buf>main.rs</buf>