michael@0: Cu.import("resource://services-sync/constants.js"); michael@0: Cu.import("resource://services-sync/status.js"); michael@0: michael@0: function run_test() { michael@0: michael@0: // Check initial states michael@0: do_check_false(Status.enforceBackoff); michael@0: do_check_eq(Status.backoffInterval, 0); michael@0: do_check_eq(Status.minimumNextSync, 0); michael@0: michael@0: do_check_eq(Status.service, STATUS_OK); michael@0: do_check_eq(Status.sync, SYNC_SUCCEEDED); michael@0: do_check_eq(Status.login, LOGIN_SUCCEEDED); michael@0: for (let name in Status.engines) { michael@0: do_throw('Status.engines should be empty.'); michael@0: } michael@0: do_check_eq(Status.partial, false); michael@0: michael@0: michael@0: // Check login status michael@0: for each (let code in [LOGIN_FAILED_NO_USERNAME, michael@0: LOGIN_FAILED_NO_PASSWORD, michael@0: LOGIN_FAILED_NO_PASSPHRASE]) { michael@0: Status.login = code; michael@0: do_check_eq(Status.login, code); michael@0: do_check_eq(Status.service, CLIENT_NOT_CONFIGURED); michael@0: Status.resetSync(); michael@0: } michael@0: michael@0: Status.login = LOGIN_FAILED; michael@0: do_check_eq(Status.login, LOGIN_FAILED); michael@0: do_check_eq(Status.service, LOGIN_FAILED); michael@0: Status.resetSync(); michael@0: michael@0: Status.login = LOGIN_SUCCEEDED; michael@0: do_check_eq(Status.login, LOGIN_SUCCEEDED); michael@0: do_check_eq(Status.service, STATUS_OK); michael@0: Status.resetSync(); michael@0: michael@0: michael@0: // Check sync status michael@0: Status.sync = SYNC_FAILED; michael@0: do_check_eq(Status.sync, SYNC_FAILED); michael@0: do_check_eq(Status.service, SYNC_FAILED); michael@0: michael@0: Status.sync = SYNC_SUCCEEDED; michael@0: do_check_eq(Status.sync, SYNC_SUCCEEDED); michael@0: do_check_eq(Status.service, STATUS_OK); michael@0: michael@0: Status.resetSync(); michael@0: michael@0: michael@0: // Check engine status michael@0: Status.engines = ["testEng1", ENGINE_SUCCEEDED]; michael@0: do_check_eq(Status.engines["testEng1"], ENGINE_SUCCEEDED); michael@0: do_check_eq(Status.service, STATUS_OK); michael@0: michael@0: Status.engines = ["testEng2", ENGINE_DOWNLOAD_FAIL]; michael@0: do_check_eq(Status.engines["testEng1"], ENGINE_SUCCEEDED); michael@0: do_check_eq(Status.engines["testEng2"], ENGINE_DOWNLOAD_FAIL); michael@0: do_check_eq(Status.service, SYNC_FAILED_PARTIAL); michael@0: michael@0: Status.engines = ["testEng3", ENGINE_SUCCEEDED]; michael@0: do_check_eq(Status.engines["testEng1"], ENGINE_SUCCEEDED); michael@0: do_check_eq(Status.engines["testEng2"], ENGINE_DOWNLOAD_FAIL); michael@0: do_check_eq(Status.engines["testEng3"], ENGINE_SUCCEEDED); michael@0: do_check_eq(Status.service, SYNC_FAILED_PARTIAL); michael@0: michael@0: michael@0: // Check resetSync michael@0: Status.sync = SYNC_FAILED; michael@0: Status.resetSync(); michael@0: michael@0: do_check_eq(Status.service, STATUS_OK); michael@0: do_check_eq(Status.sync, SYNC_SUCCEEDED); michael@0: for (name in Status.engines) { michael@0: do_throw('Status.engines should be empty.'); michael@0: } michael@0: michael@0: michael@0: // Check resetBackoff michael@0: Status.enforceBackoff = true; michael@0: Status.backOffInterval = 4815162342; michael@0: Status.backOffInterval = 42; michael@0: Status.resetBackoff(); michael@0: michael@0: do_check_false(Status.enforceBackoff); michael@0: do_check_eq(Status.backoffInterval, 0); michael@0: do_check_eq(Status.minimumNextSync, 0); michael@0: michael@0: }