use std::{borrow::Cow, convert::TryFrom}; use git_config::File;use git_testtools::fixture_path; fn init_config() -> File<'static> { File::open(fixture_path("multi-core.txt")).unwrap()} #[test]fn value_is_correct() { let mut git_config = init_config(); let value = git_config.raw_multi_value_mut("core", None, "a").unwrap(); assert_eq!( &*value.get().unwrap(), vec![ Cow::<[u8]>::Owned(b"b100".to_vec()), Cow::<[u8]>::Borrowed(b"d"), Cow::<[u8]>::Borrowed(b"f"), ] );} #[test]fn non_empty_sizes_are_correct() { let mut git_config = init_config(); assert_eq!(git_config.raw_multi_value_mut("core", None, "a").unwrap().len(), 3); assert!(!git_config.raw_multi_value_mut("core", None, "a").unwrap().is_empty());} #[test]fn set_value_at_start() { let mut git_config = init_config(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); values.set_string(0, "Hello".to_string()); assert_eq!( git_config.to_string(), "[core]\n a=Hello\n [core]\n a=d\n a=f" );} #[test]fn set_value_at_end() { let mut git_config = init_config(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); values.set_string(2, "Hello".to_string()); assert_eq!( git_config.to_string(), "[core]\n a=b\"100\"\n [core]\n a=d\n a=Hello" );} #[test]fn set_values_all() { let mut git_config = init_config(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); values.set_owned_values_all(b"Hello"); assert_eq!( git_config.to_string(), "[core]\n a=Hello\n [core]\n a=Hello\n a=Hello" );} #[test]fn delete() { let mut git_config = init_config(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); values.delete(0); assert_eq!( git_config.to_string(), "[core]\n \n [core]\n a=d\n a=f", );} #[test]fn delete_all() { let mut git_config = init_config(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); values.delete_all(); assert!(values.get().is_err()); assert_eq!(git_config.to_string(), "[core]\n \n [core]\n \n ",);} #[test]fn partial_values_are_supported() { let mut git_config = File::try_from( r#"[core] a=b\"100" [core] a=d\b a=f\a"#, ) .unwrap(); let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap(); assert_eq!( &*values.get().unwrap(), vec![ Cow::<[u8]>::Owned(b"b100".to_vec()), Cow::<[u8]>::Borrowed(b"db"), Cow::<[u8]>::Borrowed(b"fa"), ] ); values.delete_all(); assert!(values.get().is_err());}
use std::{borrow::Cow, convert::TryFrom};
use git_config::File;
use git_testtools::fixture_path;
fn init_config() -> File<'static> {
File::open(fixture_path("multi-core.txt")).unwrap()
}
#[test]
fn value_is_correct() {
let mut git_config = init_config();
let value = git_config.raw_multi_value_mut("core", None, "a").unwrap();
assert_eq!(
&*value.get().unwrap(),
vec![
Cow::<[u8]>::Owned(b"b100".to_vec()),
Cow::<[u8]>::Borrowed(b"d"),
Cow::<[u8]>::Borrowed(b"f"),
]
);
}
#[test]
fn non_empty_sizes_are_correct() {
let mut git_config = init_config();
assert_eq!(git_config.raw_multi_value_mut("core", None, "a").unwrap().len(), 3);
assert!(!git_config.raw_multi_value_mut("core", None, "a").unwrap().is_empty());
}
#[test]
fn set_value_at_start() {
let mut git_config = init_config();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
values.set_string(0, "Hello".to_string());
assert_eq!(
git_config.to_string(),
"[core]\n a=Hello\n [core]\n a=d\n a=f"
);
}
#[test]
fn set_value_at_end() {
let mut git_config = init_config();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
values.set_string(2, "Hello".to_string());
assert_eq!(
git_config.to_string(),
"[core]\n a=b\"100\"\n [core]\n a=d\n a=Hello"
);
}
#[test]
fn set_values_all() {
let mut git_config = init_config();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
values.set_owned_values_all(b"Hello");
assert_eq!(
git_config.to_string(),
"[core]\n a=Hello\n [core]\n a=Hello\n a=Hello"
);
}
#[test]
fn delete() {
let mut git_config = init_config();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
values.delete(0);
assert_eq!(
git_config.to_string(),
"[core]\n \n [core]\n a=d\n a=f",
);
}
#[test]
fn delete_all() {
let mut git_config = init_config();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
values.delete_all();
assert!(values.get().is_err());
assert_eq!(git_config.to_string(), "[core]\n \n [core]\n \n ",);
}
#[test]
fn partial_values_are_supported() {
let mut git_config = File::try_from(
r#"[core]
a=b\
"100"
[core]
a=d\
b
a=f\
a"#,
)
.unwrap();
let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();
assert_eq!(
&*values.get().unwrap(),
vec![
Cow::<[u8]>::Owned(b"b100".to_vec()),
Cow::<[u8]>::Borrowed(b"db"),
Cow::<[u8]>::Borrowed(b"fa"),
]
);
values.delete_all();
assert!(values.get().is_err());
}