diff --git a/src/prefs.rs b/src/prefs.rs
index 470f005..d1a4268 100644
@@ -237,12 +237,12 @@ impl Preferences{
}
#[allow(dead_code)] // used in testing
- fn set_string_value(&mut self, name: &str, value: &str) {
+ pub fn set_string_value(&mut self, name: &str, value: &str) {
self.prefs.insert(name.to_string(), Yaml::String(value.trim().to_string()));
}
#[allow(dead_code)] // used in testing
- fn set_bool_value(&mut self, name: &str, value: bool) {
+ pub fn set_bool_value(&mut self, name: &str, value: bool) {
self.prefs.insert(name.to_string(), Yaml::Boolean(value));
}
}
@@ -797,6 +797,8 @@ impl PreferenceManager {
if self.user_prefs.to_string(name) == value {
return None;
}
+ println!("old value: {}", self.user_prefs.to_string(name));
+
if name == "Language" || name == "SpeechStyle" || name == "BrailleCode" {
let old_speech = self.speech.clone();
@@ -809,6 +811,8 @@ impl PreferenceManager {
let old_defs= self.defs.clone();
self.user_prefs.set_string_value(name, value);
+ println!("new value: {}", self.user_prefs.to_string(name));
+
if let Some(rules_dir) = self.rules_dir.clone() {
self.set_all_files(&rules_dir, self.user_prefs.clone(), self.pref_files.clone()).unwrap();
let changed = FilesChanged {
@@ -961,8 +965,15 @@ mod tests {
PREF_MANAGER.with(|pref_manager| {
let mut pref_manager = pref_manager.borrow_mut();
pref_manager.initialize(abs_rules_dir_path()).unwrap();
+
+ pref_manager.set_user_prefs("Language", "en");
+ pref_manager.set_user_prefs("SubjectArea", "General");
+ pref_manager.set_user_prefs("ClearSpeak_AbsoluteValue", "Auto");
+ pref_manager.set_user_prefs("ResetNavMode", "false");
+ pref_manager.set_user_prefs("BrailleCode", "Nemeth");
+
let prefs = pref_manager.get_user_prefs();
- assert_eq!(prefs.to_string("Language").as_str(), "Auto");
+ assert_eq!(prefs.to_string("Language").as_str(), "en");
assert_eq!(prefs.to_string("SubjectArea").as_str(), "General");
assert_eq!(prefs.to_string("ClearSpeak_AbsoluteValue").as_str(), "Auto");
assert_eq!(prefs.to_string("ResetNavMode").as_str(), "false");
@@ -976,6 +987,7 @@ mod tests {
PREF_MANAGER.with(|pref_manager| {
let mut pref_manager = pref_manager.borrow_mut();
pref_manager.initialize(abs_rules_dir_path()).unwrap();
+ pref_manager.set_user_prefs("Language", "en");
pref_manager.set_user_prefs("SpeechStyle", "ClearSpeak");
assert_eq!(rel_path(&pref_manager.rules_dir, &pref_manager.get_rule_file(&RulesFor::Speech)[0]), PathBuf::from("Languages/en/ClearSpeak_Rules.yaml"));
@@ -986,6 +998,22 @@ mod tests {
});
}
+ #[test]
+ fn test_speech_style_change() {
+ PREF_MANAGER.with(|pref_manager| {
+ let mut pref_manager = pref_manager.borrow_mut();
+ pref_manager.initialize(abs_rules_dir_path()).unwrap();
+ pref_manager.set_user_prefs("Language", "en");
+ pref_manager.set_user_prefs("SpeechStyle", "ClearSpeak");
+
+ assert_eq!(rel_path(&pref_manager.rules_dir, &pref_manager.get_rule_file(&RulesFor::Speech)[0]), PathBuf::from("Languages/en/ClearSpeak_Rules.yaml"));
+
+ pref_manager.set_user_prefs("SpeechStyle", "SimpleSpeak");
+
+ assert_eq!(rel_path(&pref_manager.rules_dir, &pref_manager.get_rule_file(&RulesFor::Speech)[0]), PathBuf::from("Languages/en/SimpleSpeak_Rules.yaml"));
+ });
+ }
+
#[test]
fn test_some_changes() {
PREF_MANAGER.with(|pref_manager| {