1 $(document).ready(function () {
5 openerp = window.openerp.init([]);
6 window.openerp.web.corelib(openerp);
9 test('Basic class creation', function () {
10 var C = openerp.web.Class.extend({
15 var instance = new C();
18 ok(instance instanceof C);
19 strictEqual(instance.foo(), 3);
21 test('Class initialization', function () {
22 var C1 = openerp.web.Class.extend({
27 var C2 = openerp.web.Class.extend({
28 init: function (arg) {
36 strictEqual(i1.foo, 3);
37 strictEqual(i2.foo, 42);
39 test('Inheritance', function () {
40 var C0 = openerp.web.Class.extend({
47 return 1 + this._super();
52 return 1 + this._super();
56 strictEqual(new C0().foo(), 1);
57 strictEqual(new C1().foo(), 2);
58 strictEqual(new C2().foo(), 3);
60 test('In-place extension', function () {
61 var C0 = openerp.web.Class.extend({
75 return 2 + this._super();
81 strictEqual(new C0().bar, 5);
82 strictEqual(new C0().baz, 5);
83 strictEqual(new C0().foo(), 5);
84 strictEqual(new C0().qux(), 5);
86 test('In-place extension and inheritance', function () {
87 var C0 = openerp.web.Class.extend({
88 foo: function () { return 1; },
89 bar: function () { return 1; }
92 foo: function () { return 1 + this._super(); }
94 strictEqual(new C1().foo(), 2);
95 strictEqual(new C1().bar(), 1);
98 foo: function () { return 2 + this._super(); },
99 bar: function () { return 1 + this._super(); }
101 strictEqual(new C1().foo(), 4);
102 strictEqual(new C1().bar(), 2);
104 test('In-place extensions alter existing instances', function () {
105 var C0 = openerp.web.Class.extend({
106 foo: function () { return 1; },
107 bar: function () { return 1; }
109 var instance = new C0();
110 strictEqual(instance.foo(), 1);
111 strictEqual(instance.bar(), 1);
114 foo: function () { return 2; },
115 bar: function () { return 2 + this._super(); }
117 strictEqual(instance.foo(), 2);
118 strictEqual(instance.bar(), 3);
120 test('In-place extension of subclassed types', function () {
121 var C0 = openerp.web.Class.extend({
122 foo: function () { return 1; },
123 bar: function () { return 1; }
126 foo: function () { return 1 + this._super(); },
127 bar: function () { return 1 + this._super(); }
129 var instance = new C1();
130 strictEqual(instance.foo(), 2);
132 foo: function () { return 2; },
133 bar: function () { return 2 + this._super(); }
135 strictEqual(instance.foo(), 3);
136 strictEqual(instance.bar(), 4);