mathcat 0.3.5

MathCAT: Math Capable Assistive Technology ('Speech and braille from MathML')
Documentation
diff --git a/tests/common/mod.rs b/tests/common/mod.rs
index 0f7224c..fe05464 100644
--- a/tests/common/mod.rs
+++ b/tests/common/mod.rs
@@ -52,14 +52,21 @@ pub fn test(language: &str, style: &str, mathml: &str, speech: &str) {
     set_rules_dir(abs_rules_dir_path()).unwrap();
     libmathcat::speech::SPEECH_RULES.with(|rules| {
         let mut rules = rules.borrow_mut();
-        let changes;
+        let mut changes = None;
         {
             let mut prefs = rules.pref_manager.borrow_mut();
-            prefs.set_user_prefs("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
-            prefs.set_user_prefs("PauseFactor", "100");                         // makes testing simpler
-            prefs.set_user_prefs("Language", language);
-            prefs.set_user_prefs("Verbosity", "Medium");
-            changes = prefs.set_user_prefs("SpeechStyle", style);
+            let user_prefs = prefs.get_user_prefs();
+            let old_language = user_prefs.to_string("Language");
+            let old_style = user_prefs.to_string("SpeechStyle");
+            user_prefs.set_string_value("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
+            user_prefs.set_string_value("PauseFactor", "100");                         // makes testing simpler
+            user_prefs.set_string_value("Verbosity", "Medium");
+            if &old_language != language {
+                changes = prefs.set_user_prefs("Language", language);
+            }
+            if &old_style != style {
+                changes = prefs.set_user_prefs("SpeechStyle", style);
+            }
         }
         if let Some(changes) = changes {
             rules.invalidate(changes);
@@ -79,10 +86,11 @@ pub fn test_prefs(language: &str, speech_style: &str, test_prefs: Vec<(&str, &st
         let mut changes;
         {
             let mut prefs = rules.pref_manager.borrow_mut();
-            prefs.set_user_prefs("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
-            prefs.set_user_prefs("PauseFactor", "100");                         // makes testing simpler
-            prefs.set_user_prefs("Language", language);
-            changes = prefs.set_user_prefs("SpeechStyle", speech_style).unwrap_or_default();
+            let user_prefs = prefs.get_user_prefs();
+            user_prefs.set_string_value("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
+            user_prefs.set_string_value("PauseFactor", "100");                         // makes testing simpler
+            user_prefs.set_string_value("Language", language);
+            changes = prefs.set_user_prefs("SpeechStyle", "ClearSpeak").unwrap_or_default();
             for (pref_name, pref_value) in test_prefs {
                 if let Some(more_changes) = prefs.set_user_prefs(pref_name, pref_value) {
                     changes.add_changes(more_changes);
@@ -105,9 +113,10 @@ pub fn test_ClearSpeak(language: &str, pref_name: &str, pref_value: &str, mathml
         let mut changes;
         {   // needs to be scoped due to problems with rules potentially being used with prefs' destructor runs in an outer scope
             let mut prefs = rules.pref_manager.borrow_mut();
-            prefs.set_user_prefs("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
-            prefs.set_user_prefs("PauseFactor", "100");                         // makes testing simpler
-            prefs.set_user_prefs("Language", language);
+            let user_prefs = prefs.get_user_prefs();
+            user_prefs.set_string_value("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
+            user_prefs.set_string_value("PauseFactor", "100");                         // makes testing simpler
+            user_prefs.set_string_value("Language", language);
             changes = prefs.set_user_prefs("SpeechStyle", "ClearSpeak").unwrap_or_default();
             let more_changes = prefs.set_user_prefs(pref_name, pref_value).unwrap_or_default();
             changes.add_changes(more_changes);
@@ -128,9 +137,10 @@ pub fn test_ClearSpeak_prefs(language: &str, test_prefs: Vec<(&str, &str)>, math
         let mut changes;
         {
             let mut prefs = rules.pref_manager.borrow_mut();
-            prefs.set_user_prefs("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
-            prefs.set_user_prefs("PauseFactor", "100");                         // makes testing simpler
-            prefs.set_user_prefs("Language", language);
+            let user_prefs = prefs.get_user_prefs();
+            user_prefs.set_string_value("SpeechOverrides_CapitalLetters", "");         // makes testing simpler
+            user_prefs.set_string_value("PauseFactor", "100");                         // makes testing simpler
+            user_prefs.set_string_value("Language", language);
             changes = prefs.set_user_prefs("SpeechStyle", "ClearSpeak").unwrap_or_default();
             for (pref_name, pref_value) in test_prefs {
                 if let Some(more_changes) = prefs.set_user_prefs(pref_name, pref_value) {