use simple_config_parser::Config;
#[test]
fn test_config_from_string() {
let cfg = Config::new()
.text("hello = world\nrust = is great\ntest = \"TEST\"")
.unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
assert_eq!(cfg.get_str("rust").unwrap(), "is great");
assert_eq!(cfg.get_str("test").unwrap(), "\"TEST\"");
}
#[test]
fn test_config_from_file() {
let cfg = Config::new().file("config.cfg").unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "World");
assert_eq!(cfg.get_str("rust").unwrap(), "Is great");
assert_eq!(cfg.get_str("test").unwrap(), "\"TEST\"");
}
#[test]
#[should_panic]
fn test_config_from_string_with_comments() {
let cfg = Config::new()
.text("hello = world\n#rust = is great\n;test = \"TEST\"")
.unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
cfg.get_str("rust").unwrap();
cfg.get_str("test").unwrap();
}
#[test]
fn test_case_sensitivity() {
let cfg = Config::new()
.text("HeLlO = world\nRuSt = is great\nTeSt = \"TEST\"")
.unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
assert_eq!(cfg.get_str("RUST").unwrap(), "is great");
assert_eq!(cfg.get_str("tEsT").unwrap(), "\"TEST\"");
}
#[test]
fn test_comments_in_file() {
let cfg = Config::new()
.text("hello = world\nrust = is great # Comment\ntest = \"TEST\"; Nother Comment")
.unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
assert_eq!(cfg.get_str("RUST").unwrap(), "is great");
assert_eq!(cfg.get_str("tEsT").unwrap(), "\"TEST\"");
}
#[test]
fn test_ignoring_sections() {
let cfg = Config::new()
.text("[section]\nhello = world\n[section2]\nrust = is great\n[section3]\ntest = \"TEST\"")
.unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
assert_eq!(cfg.get_str("rust").unwrap(), "is great");
assert_eq!(cfg.get_str("test").unwrap(), "\"TEST\"");
}
#[test]
fn test_last_key_wins() {
let cfg = Config::new().text("hello = people\nhello = world").unwrap();
assert_eq!(cfg.get_str("hello").unwrap(), "world");
}
#[test]
fn test_bool_value() {
let cfg = Config::new().text("test = true\ntset = false").unwrap();
assert_eq!(cfg.get::<bool>("test").unwrap(), true);
assert_eq!(cfg.get::<bool>("tset").unwrap(), false);
}
#[test]
fn test_int_value() {
let cfg = Config::new().text("test = 1\ntset = 100").unwrap();
assert_eq!(cfg.get::<i32>("test").unwrap(), 1);
assert_eq!(cfg.get::<i32>("tset").unwrap(), 100);
}
#[test]
fn test_float_value() {
let cfg = Config::new()
.text("test = 1.123\npi = 3.14159 ; And so on")
.unwrap();
assert_eq!(cfg.get::<f32>("test").unwrap(), 1.123);
assert_eq!(cfg.get::<f32>("pi").unwrap(), 3.14159);
}
#[test]
fn test_load_priority() {
let cfg = Config::new()
.text("a = 1\nb = 2")
.unwrap()
.text("a = 2\nb = 4")
.unwrap();
assert_eq!(cfg.get_str("a").unwrap(), "2");
assert_eq!(cfg.get_str("b").unwrap(), "4");
}