diff options
Diffstat (limited to 'extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js')
-rw-r--r-- | extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js b/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js new file mode 100644 index 000000000..a42bc1219 --- /dev/null +++ b/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js @@ -0,0 +1,97 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +var {classes: Cc, interfaces: Ci, results: Cr} = Components; + +function run_test() { + let dirSvc = Cc["@mozilla.org/file/directory_service;1"]. + getService(Ci.nsIProperties); + let obsvc = Cc['@mozilla.org/observer-service;1']. + getService(Ci.nsIObserverService); + let ps = Cc["@mozilla.org/preferences-service;1"]. + getService(Ci.nsIPrefService); + let defaultPrefs = ps.getDefaultBranch(null); + let prefs = ps.getBranch(null); + + let greD = dirSvc.get("GreD", Ci.nsIFile); + let defaultPrefD = dirSvc.get("PrfDef", Ci.nsIFile); + let testDir = do_get_cwd(); + + try { + let autoConfigJS = testDir.clone(); + autoConfigJS.append("autoconfig.js"); + autoConfigJS.copyTo(defaultPrefD, "autoconfig.js"); + + // Make sure nsReadConfig is initialized. + Cc["@mozilla.org/readconfig;1"].getService(Ci.nsISupports); + ps.resetPrefs(); + + var tests = [{ + filename: "autoconfig-utf8.cfg", + prefs: { + "_test.string.ASCII": "UTF-8", + "_test.string.non-ASCII": "日本語", + "_test.string.getPref": "日本語", + "_test.string.gIsUTF8": "true" + } + }, { + filename: "autoconfig-latin1.cfg", + prefs: { + "_test.string.ASCII": "ASCII", + "_test.string.non-ASCII": "日本語", + "_test.string.getPref": "日本語", + "_test.string.gIsUTF8": "false", + } + }]; + + function testAutoConfig(test) { + // Make sure pref values are unset. + for (let prefName in test.prefs) { + do_check_eq(Ci.nsIPrefBranch.PREF_INVALID, prefs.getPrefType(prefName)); + } + + let autoConfigCfg = testDir.clone(); + autoConfigCfg.append(test.filename); + autoConfigCfg.copyTo(greD, "autoconfig.cfg"); + + obsvc.notifyObservers(ps, "prefservice:before-read-userprefs", null); + + for (let prefName in test.prefs) { + do_check_eq(test.prefs[prefName], + prefs.getComplexValue(prefName, Ci.nsISupportsString).data); + } + + ps.resetPrefs(); + // Make sure pref values are reset. + for (let prefName in test.prefs) { + do_check_eq(Ci.nsIPrefBranch.PREF_INVALID, prefs.getPrefType(prefName)); + } + } + + tests.forEach(testAutoConfig); + + } finally { + try { + let autoConfigJS = defaultPrefD.clone(); + autoConfigJS.append("autoconfig.js"); + autoConfigJS.remove(false); + } catch (e) { + if (e.result != Cr.NS_ERROR_FILE_NOT_FOUND) { + throw e; + } + } + + try { + let autoConfigCfg = greD.clone(); + autoConfigCfg.append("autoconfig.cfg"); + autoConfigCfg.remove(false); + } catch (e) { + if (e.result != Cr.NS_ERROR_FILE_NOT_FOUND) { + throw e; + } + } + + ps.resetPrefs(); + } +} + |