mathcat 0.3.5

MathCAT: Math Capable Assistive Technology ('Speech and braille from MathML')
Documentation
diff --git a/src/prefs.rs b/src/prefs.rs
index 470f005..d1a4268 100644
--- a/src/prefs.rs
+++ b/src/prefs.rs
@@ -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| {