mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
Cu.import("resource://services-sync/util.js");
|
|
Cu.import("resource://services-sync/service.js");
|
|
|
|
function run_test() {
|
|
_("Make sure catch when copied to an object will correctly catch stuff");
|
|
let ret, rightThis, didCall, didThrow, wasTen, wasLocked;
|
|
let obj = {
|
|
catch: Utils.catch,
|
|
_log: {
|
|
debug: function(str) {
|
|
didThrow = str.search(/^Exception: /) == 0;
|
|
},
|
|
info: function(str) {
|
|
wasLocked = str.indexOf("Cannot start sync: already syncing?") == 0;
|
|
}
|
|
},
|
|
|
|
func: function() this.catch(function() {
|
|
rightThis = this == obj;
|
|
didCall = true;
|
|
return 5;
|
|
})(),
|
|
|
|
throwy: function() this.catch(function() {
|
|
rightThis = this == obj;
|
|
didCall = true;
|
|
throw 10;
|
|
})(),
|
|
|
|
callbacky: function() this.catch(function() {
|
|
rightThis = this == obj;
|
|
didCall = true;
|
|
throw 10;
|
|
}, function(ex) {
|
|
wasTen = (ex == 10)
|
|
})(),
|
|
|
|
lockedy: function() this.catch(function() {
|
|
rightThis = this == obj;
|
|
didCall = true;
|
|
throw("Could not acquire lock.");
|
|
})()
|
|
};
|
|
|
|
_("Make sure a normal call will call and return");
|
|
rightThis = didCall = didThrow = wasLocked = false;
|
|
ret = obj.func();
|
|
do_check_eq(ret, 5);
|
|
do_check_true(rightThis);
|
|
do_check_true(didCall);
|
|
do_check_false(didThrow);
|
|
do_check_eq(wasTen, undefined);
|
|
do_check_false(wasLocked);
|
|
|
|
_("Make sure catch/throw results in debug call and caller doesn't need to handle exception");
|
|
rightThis = didCall = didThrow = wasLocked = false;
|
|
ret = obj.throwy();
|
|
do_check_eq(ret, undefined);
|
|
do_check_true(rightThis);
|
|
do_check_true(didCall);
|
|
do_check_true(didThrow);
|
|
do_check_eq(wasTen, undefined);
|
|
do_check_false(wasLocked);
|
|
|
|
_("Test callback for exception testing.");
|
|
rightThis = didCall = didThrow = wasLocked = false;
|
|
ret = obj.callbacky();
|
|
do_check_eq(ret, undefined);
|
|
do_check_true(rightThis);
|
|
do_check_true(didCall);
|
|
do_check_true(didThrow);
|
|
do_check_true(wasTen);
|
|
do_check_false(wasLocked);
|
|
|
|
_("Test the lock-aware catch that Service uses.");
|
|
obj.catch = Service._catch;
|
|
rightThis = didCall = didThrow = wasLocked = false;
|
|
wasTen = undefined;
|
|
ret = obj.lockedy();
|
|
do_check_eq(ret, undefined);
|
|
do_check_true(rightThis);
|
|
do_check_true(didCall);
|
|
do_check_true(didThrow);
|
|
do_check_eq(wasTen, undefined);
|
|
do_check_true(wasLocked);
|
|
}
|