Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Side by Side Diff: remoting/webapp/base/js/base_inherits_unittest.js

Issue 1016373003: [Chromoting] Change Application.Delegate to proper subclass of Application. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update comments; remove desktopDelegateForTesting Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 (function() { 5 (function() {
6 6
7 'use strict'; 7 'use strict';
8 8
9 QUnit.module('base.inherits'); 9 QUnit.module('base.inherits');
10 10
11 /** 11 /**
12 * @constructor 12 * @constructor
13 * @extends {ChildClass} 13 * @extends {ChildClass}
14 */ 14 */
15 var GrandChildClass = function() { 15 var GrandChildClass = function() {
16 base.inherits(this, ChildClass); 16 base.inherits(this, ChildClass);
17 this.name = 'grandChild'; 17 this.name = 'grandChild';
18 } 18 }
19 19
20 /** @return {string} */ 20 /**
21 GrandChildClass.prototype.overrideMethod = function() { 21 * @param {string} arg
22 return 'overrideMethod - grandChild'; 22 * @return {string}
23 */
24 GrandChildClass.prototype.overrideMethod = function(arg) {
25 return 'overrideMethod - grandChild - ' + arg;
23 } 26 }
24 27
25 /** 28 /**
26 * @constructor 29 * @constructor
27 * @extends {ParentClass} 30 * @extends {ParentClass}
28 */ 31 */
29 var ChildClass = function() { 32 var ChildClass = function() {
30 base.inherits(this, ParentClass, 'parentArg'); 33 base.inherits(this, ParentClass, 'parentArg');
31 this.name = 'child'; 34 this.name = 'child';
32 this.childOnly = 'childOnly'; 35 this.childOnly = 'childOnly';
33 } 36 }
34 37
35 /** @return {string} */ 38 /**
36 ChildClass.prototype.overrideMethod = function() { 39 * @param {string} arg
37 return 'overrideMethod - child'; 40 * @return {string}
41 */
42 ChildClass.prototype.overrideMethod = function(arg) {
43 return 'overrideMethod - child - ' + arg;
38 } 44 }
39 45
40 /** @return {string} */ 46 /** @return {string} */
41 ChildClass.prototype.childMethod = function() { 47 ChildClass.prototype.childMethod = function() {
42 return 'childMethod'; 48 return 'childMethod';
43 } 49 }
44 50
45 /** 51 /**
52 * @param {string} arg
46 * @constructor 53 * @constructor
47 * @param {string} arg
48 */ 54 */
49 var ParentClass = function(arg) { 55 var ParentClass = function(arg) {
50 /** @type {string} */ 56 /** @type {string} */
51 this.name = 'parent'; 57 this.name = 'parent';
52 /** @type {string} */ 58 /** @type {string} */
53 this.parentOnly = 'parentOnly'; 59 this.parentOnly = 'parentOnly';
54 /** @type {string} */ 60 /** @type {string} */
55 this.parentConstructorArg = arg; 61 this.parentConstructorArg = arg;
56 } 62 }
57 63
58 /** @return {string} */ 64 /** @return {string} */
59 ParentClass.prototype.parentMethod = function() { 65 ParentClass.prototype.parentMethod = function() {
60 return 'parentMethod'; 66 return 'parentMethod';
61 } 67 }
62 68
63 /** @return {string} */ 69 /**
64 ParentClass.prototype.overrideMethod = function() { 70 * @param {string} arg
65 return 'overrideMethod - parent'; 71 * @return {string}
72 */
73 ParentClass.prototype.overrideMethod = function(arg) {
74 return 'overrideMethod - parent - ' + arg;
66 } 75 }
67 76
68 QUnit.test('should invoke parent constructor with the correct arguments', 77 QUnit.test('should invoke parent constructor with the correct arguments',
69 function(assert) { 78 function(assert) {
70 var child = new ChildClass(); 79 var child = new ChildClass();
71 assert.equal(child.parentConstructorArg, 'parentArg'); 80 assert.equal(child.parentConstructorArg, 'parentArg');
72 }); 81 });
73 82
74 QUnit.test('should preserve parent property and method', function(assert) { 83 QUnit.test('should preserve parent property and method', function(assert) {
75 var child = new ChildClass(); 84 var child = new ChildClass();
76 assert.equal(child.parentOnly, 'parentOnly'); 85 assert.equal(child.parentOnly, 'parentOnly');
77 assert.equal(child.parentMethod(), 'parentMethod'); 86 assert.equal(child.parentMethod(), 'parentMethod');
78 }); 87 });
79 88
80 QUnit.test('should preserve instanceof', function(assert) { 89 QUnit.test('should preserve instanceof', function(assert) {
81 var child = new ChildClass(); 90 var child = new ChildClass();
82 var grandChild = new GrandChildClass(); 91 var grandChild = new GrandChildClass();
83 assert.ok(child instanceof ParentClass); 92 assert.ok(child instanceof ParentClass);
84 assert.ok(child instanceof ChildClass); 93 assert.ok(child instanceof ChildClass);
85 assert.ok(grandChild instanceof ParentClass); 94 assert.ok(grandChild instanceof ParentClass);
86 assert.ok(grandChild instanceof ChildClass); 95 assert.ok(grandChild instanceof ChildClass);
87 assert.ok(grandChild instanceof GrandChildClass); 96 assert.ok(grandChild instanceof GrandChildClass);
88 }); 97 });
89 98
90 QUnit.test('should override parent property and method', function(assert) { 99 QUnit.test('should override parent property and method', function(assert) {
91 var child = new ChildClass(); 100 var child = new ChildClass();
92 assert.equal(child.name, 'child'); 101 assert.equal(child.name, 'child');
93 assert.equal(child.overrideMethod(), 'overrideMethod - child'); 102 assert.equal(child.overrideMethod('123'), 'overrideMethod - child - 123');
94 assert.equal(child.childOnly, 'childOnly'); 103 assert.equal(child.childOnly, 'childOnly');
95 assert.equal(child.childMethod(), 'childMethod'); 104 assert.equal(child.childMethod(), 'childMethod');
96 }); 105 });
97 106
98 QUnit.test('should works on an inheritance chain', function(assert) { 107 QUnit.test('should work on an inheritance chain', function(assert) {
99 var grandChild = new GrandChildClass(); 108 var grandChild = new GrandChildClass();
100 assert.equal(grandChild.name, 'grandChild'); 109 assert.equal(grandChild.name, 'grandChild');
101 assert.equal(grandChild.overrideMethod(), 'overrideMethod - grandChild'); 110 assert.equal(grandChild.overrideMethod('246'),
111 'overrideMethod - grandChild - 246');
102 assert.equal(grandChild.childOnly, 'childOnly'); 112 assert.equal(grandChild.childOnly, 'childOnly');
103 assert.equal(grandChild.childMethod(), 'childMethod'); 113 assert.equal(grandChild.childMethod(), 'childMethod');
104 assert.equal(grandChild.parentOnly, 'parentOnly'); 114 assert.equal(grandChild.parentOnly, 'parentOnly');
105 assert.equal(grandChild.parentMethod(), 'parentMethod'); 115 assert.equal(grandChild.parentMethod(), 'parentMethod');
106 }); 116 });
107 117
108 })(); 118 QUnit.test('should be able to access parent class methods', function(assert) {
119 var grandChild = new GrandChildClass();
120
121 assert.equal(grandChild.overrideMethod('789'),
122 'overrideMethod - grandChild - 789');
123
124 var childMethod = ChildClass.prototype.overrideMethod.call(grandChild, '81');
125 assert.equal(childMethod, 'overrideMethod - child - 81');
126
127 var parentMethod = ParentClass.prototype.overrideMethod.call(grandChild, '4');
128 assert.equal(parentMethod, 'overrideMethod - parent - 4');
129 });
130
131 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698