1 openerp.testing.section('class', {
2 dependencies: ['web.corelib']
4 test('Basic class creation', function (instance) {
5 var C = instance.web.Class.extend({
14 strictEqual(i.foo(), 3);
16 test('Class initialization', function (instance) {
17 var C1 = instance.web.Class.extend({
22 var C2 = instance.web.Class.extend({
23 init: function (arg) {
31 strictEqual(i1.foo, 3);
32 strictEqual(i2.foo, 42);
34 test('Inheritance', function (instance) {
35 var C0 = instance.web.Class.extend({
42 return 1 + this._super();
47 return 1 + this._super();
51 strictEqual(new C0().foo(), 1);
52 strictEqual(new C1().foo(), 2);
53 strictEqual(new C2().foo(), 3);
55 test('In-place extension', function (instance) {
56 var C0 = instance.web.Class.extend({
70 return 2 + this._super();
76 strictEqual(new C0().bar, 5);
77 strictEqual(new C0().baz, 5);
78 strictEqual(new C0().foo(), 5);
79 strictEqual(new C0().qux(), 5);
81 test('In-place extension and inheritance', function (instance) {
82 var C0 = instance.web.Class.extend({
83 foo: function () { return 1; },
84 bar: function () { return 1; }
87 foo: function () { return 1 + this._super(); }
89 strictEqual(new C1().foo(), 2);
90 strictEqual(new C1().bar(), 1);
93 foo: function () { return 2 + this._super(); },
94 bar: function () { return 1 + this._super(); }
96 strictEqual(new C1().foo(), 4);
97 strictEqual(new C1().bar(), 2);
99 test('In-place extensions alter existing instances', function (instance) {
100 var C0 = instance.web.Class.extend({
101 foo: function () { return 1; },
102 bar: function () { return 1; }
105 strictEqual(i.foo(), 1);
106 strictEqual(i.bar(), 1);
109 foo: function () { return 2; },
110 bar: function () { return 2 + this._super(); }
112 strictEqual(i.foo(), 2);
113 strictEqual(i.bar(), 3);
115 test('In-place extension of subclassed types', function (instance) {
116 var C0 = instance.web.Class.extend({
117 foo: function () { return 1; },
118 bar: function () { return 1; }
121 foo: function () { return 1 + this._super(); },
122 bar: function () { return 1 + this._super(); }
125 strictEqual(i.foo(), 2);
127 foo: function () { return 2; },
128 bar: function () { return 2 + this._super(); }
130 strictEqual(i.foo(), 3);
131 strictEqual(i.bar(), 4);