61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
openerp.testing.section('mutex', {
|
|
dependencies: ['web.coresetup'],
|
|
setup: function (instance) {
|
|
}
|
|
}, function (test) {
|
|
test('simpleScheduling', function (instance) {
|
|
var m = new $.Mutex();
|
|
var def1 = $.Deferred();
|
|
var def2 = $.Deferred();
|
|
var p1 = m.exec(function() { return def1; });
|
|
var p2 = m.exec(function() { return def2; });
|
|
equal(p1.state(), "pending");
|
|
equal(p2.state(), "pending");
|
|
def1.resolve();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "pending");
|
|
def2.resolve();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "resolved");
|
|
});
|
|
test('simpleScheduling2', function (instance) {
|
|
var m = new $.Mutex();
|
|
var def1 = $.Deferred();
|
|
var def2 = $.Deferred();
|
|
var p1 = m.exec(function() { return def1; });
|
|
var p2 = m.exec(function() { return def2; });
|
|
equal(p1.state(), "pending");
|
|
equal(p2.state(), "pending");
|
|
def2.resolve();
|
|
equal(p1.state(), "pending");
|
|
equal(p2.state(), "pending");
|
|
def1.resolve();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "resolved");
|
|
});
|
|
test('reject', function (instance) {
|
|
var m = new $.Mutex();
|
|
var def1 = $.Deferred();
|
|
var def2 = $.Deferred();
|
|
var def3 = $.Deferred();
|
|
var p1 = m.exec(function() {return def1;});
|
|
var p2 = m.exec(function() {return def2;});
|
|
var p3 = m.exec(function() {return def3;});
|
|
equal(p1.state(), "pending");
|
|
equal(p2.state(), "pending");
|
|
equal(p3.state(), "pending");
|
|
def1.resolve();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "pending");
|
|
equal(p3.state(), "pending");
|
|
def2.reject();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "rejected");
|
|
equal(p3.state(), "pending");
|
|
def3.resolve();
|
|
equal(p1.state(), "resolved");
|
|
equal(p2.state(), "rejected");
|
|
equal(p3.state(), "resolved");
|
|
});
|
|
});
|