From 6a0be6abac8f9c51f78800f94b659a0ea412f1a9 Mon Sep 17 00:00:00 2001 From: Maciej Goszczycki Date: Mon, 6 Feb 2017 23:01:18 +0000 Subject: [PATCH 1/4] Fix path naming bug --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 91d08d6..b262692 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -318,7 +318,7 @@ pub trait Preferences: Sized { fn compute_file_path>(app: &AppInfo, key: S) -> Result { let mut path = get_app_dir(DATA_TYPE, app, key.as_ref())?; let new_name = match path.file_name() { - Some(name) if name.is_empty() => { + Some(name) if !name.is_empty() => { let mut new_name = OsString::with_capacity(name.len() + PREFS_FILE_EXTENSION.len()); new_name.push(name); new_name.push(PREFS_FILE_EXTENSION); From a939d8bf8931ed4af5a52ecab28dbd4469606b43 Mon Sep 17 00:00:00 2001 From: Maciej Goszczycki Date: Mon, 6 Feb 2017 23:09:39 +0000 Subject: [PATCH 2/4] Add multiple save load test --- src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index b262692..d5ebbee 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -394,4 +394,19 @@ mod tests { assert!(load_result.is_ok()); assert_eq!(load_result.unwrap(), sample); } + #[test] + fn test_multiple_save_load() { + let name1 = gen_test_name("multiple-save-load-1"); + let name2 = gen_test_name("multiple-save-load-2"); + let save_result1 = 1i32.save(&APP_INFO, &name1); + let save_result2 = 2i32.save(&APP_INFO, &name2); + assert!(save_result1.is_ok()); + assert!(save_result2.is_ok()); + let load_result1 = i32::load(&APP_INFO, &name1); + let load_result2 = i32::load(&APP_INFO, &name2); + assert!(load_result1.is_ok()); + assert!(load_result2.is_ok()); + assert_eq!(load_result1.unwrap(), 1); + assert_eq!(load_result2.unwrap(), 2); + } } From 8901c9c64647cf5128385ee2bc06fd837ec35055 Mon Sep 17 00:00:00 2001 From: Maciej Goszczycki Date: Tue, 7 Feb 2017 02:04:07 +0000 Subject: [PATCH 3/4] Attempt to remove a possible race condition --- src/lib.rs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d5ebbee..3dbeac3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -384,18 +384,6 @@ mod tests { } #[test] fn test_save_load() { - let name = gen_test_name("save-load"); - let sample = gen_sample_prefs(); - let save_result = sample.save(&APP_INFO, &name); - println!("Save result: {:?}", save_result); - assert!(save_result.is_ok()); - let load_result = PreferencesMap::load(&APP_INFO, &name); - println!("Load result: {:?}", load_result); - assert!(load_result.is_ok()); - assert_eq!(load_result.unwrap(), sample); - } - #[test] - fn test_multiple_save_load() { let name1 = gen_test_name("multiple-save-load-1"); let name2 = gen_test_name("multiple-save-load-2"); let save_result1 = 1i32.save(&APP_INFO, &name1); From 86a6764f498c7214f4d09a2359170211916382a7 Mon Sep 17 00:00:00 2001 From: Maciej Goszczycki Date: Tue, 7 Feb 2017 02:57:19 +0000 Subject: [PATCH 4/4] Update tests to test both PreferencesMap and multiple save --- src/lib.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3dbeac3..fda1400 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -384,17 +384,19 @@ mod tests { } #[test] fn test_save_load() { - let name1 = gen_test_name("multiple-save-load-1"); - let name2 = gen_test_name("multiple-save-load-2"); - let save_result1 = 1i32.save(&APP_INFO, &name1); - let save_result2 = 2i32.save(&APP_INFO, &name2); - assert!(save_result1.is_ok()); - assert!(save_result2.is_ok()); - let load_result1 = i32::load(&APP_INFO, &name1); - let load_result2 = i32::load(&APP_INFO, &name2); - assert!(load_result1.is_ok()); - assert!(load_result2.is_ok()); - assert_eq!(load_result1.unwrap(), 1); - assert_eq!(load_result2.unwrap(), 2); + let sample_map = gen_sample_prefs(); + let sample_other: i32 = 4; + let name_map = gen_test_name("save-load-map"); + let name_other = gen_test_name("save-load-other"); + let save_map_result = sample_map.save(&APP_INFO, &name_map); + let save_other_result = sample_other.save(&APP_INFO, &name_other); + assert!(save_map_result.is_ok()); + assert!(save_other_result.is_ok()); + let load_map_result = PreferencesMap::load(&APP_INFO, &name_map); + let load_other_result = i32::load(&APP_INFO, &name_other); + assert!(load_map_result.is_ok()); + assert!(load_other_result.is_ok()); + assert_eq!(load_map_result.unwrap(), sample_map); + assert_eq!(load_other_result.unwrap(), sample_other); } }