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

Side by Side Diff: tests/html/js_array_test.dart

Issue 1408453003: Fix JavaScript property ordering issue that was breaking js_array_test on FireFox (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 @Js("ArrayTest.Util") 5 @Js("ArrayTest.Util")
6 library js_array_test; 6 library js_array_test;
7 7
8 import 'dart:html'; 8 import 'dart:html';
9 9
10 import 'dart:js' as js; 10 import 'dart:js' as js;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 }, 123 },
124 124
125 // TODO(jacobr): add a test that distinguishes reduce from reduceRight. 125 // TODO(jacobr): add a test that distinguishes reduce from reduceRight.
126 reduceRightSumDoubledElements: function(array) { 126 reduceRightSumDoubledElements: function(array) {
127 return array.reduceRight(function(previousValue, currentValue) { 127 return array.reduceRight(function(previousValue, currentValue) {
128 return previousValue + currentValue*2; 128 return previousValue + currentValue*2;
129 }, 129 },
130 0); 130 0);
131 }, 131 },
132 132
133 getOwnPropertyDescriptorJson: function(array, property) { 133 getOwnPropertyDescriptor: function(array, property) {
134 return JSON.stringify(Object.getOwnPropertyDescriptor(array, property)); 134 return Object.getOwnPropertyDescriptor(array, property);
135 }, 135 },
136 136
137 setLength: function(array, len) { 137 setLength: function(array, len) {
138 return array.length = len; 138 return array.length = len;
139 }, 139 },
140 140
141 getValue: function(obj, index) { 141 getValue: function(obj, index) {
142 return obj[index]; 142 return obj[index];
143 }, 143 },
144 144
145 setValue: function(obj, index, value) { 145 setValue: function(obj, index, value) {
146 return obj[index] = value; 146 return obj[index] = value;
147 }, 147 },
148 148
149 // Calling a method from Dart List on an arbitrary target object. 149 // Calling a method from Dart List on an arbitrary target object.
150 callListMethodOnTarget: function(dartArray, target, methodName, args) { 150 callListMethodOnTarget: function(dartArray, target, methodName, args) {
151 return dartArray[methodName].apply(target, args); 151 return dartArray[methodName].apply(target, args);
152 }, 152 },
153 153
154 newArray: function() { return []; }, 154 newArray: function() { return []; },
155 155
156 newLiteral: function() { return {}; }, 156 newLiteral: function() { return {}; },
157 157
158 }; 158 };
159 """); 159 """);
160 } 160 }
161 161
162 @Js() 162 @Js()
163 class PropertyDescriptor {
164 external get value;
165 external bool get writable;
166 external bool get enumerable;
167 external bool get configurable;
168 }
169
170 @Js()
163 class SimpleJsLiteralClass { 171 class SimpleJsLiteralClass {
164 external get foo; 172 external get foo;
165 } 173 }
166 174
167 class Foo {} 175 class Foo {}
168 176
169 @Js() 177 @Js()
170 external callJsMethod(List array, String methodName, List args); 178 external callJsMethod(List array, String methodName, List args);
171 179
172 callIndexOf(List array, value) => callJsMethod(array, "indexOf", [value]); 180 callIndexOf(List array, value) => callJsMethod(array, "indexOf", [value]);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 @Js() 231 @Js()
224 external mapAddIndexToEachElement(List array); 232 external mapAddIndexToEachElement(List array);
225 @Js() 233 @Js()
226 external reduceSumDoubledElements(List array); 234 external reduceSumDoubledElements(List array);
227 235
228 // TODO(jacobr): add a test that distinguishes reduce from reduceRight. 236 // TODO(jacobr): add a test that distinguishes reduce from reduceRight.
229 @Js() 237 @Js()
230 external reduceRightSumDoubledElements(List array); 238 external reduceRightSumDoubledElements(List array);
231 239
232 @Js() 240 @Js()
233 external getOwnPropertyDescriptorJson(List array, property); 241 external PropertyDescriptor getOwnPropertyDescriptor(obj, property);
234 242
235 @Js("setLength") 243 @Js("setLength")
236 external callSetLength(List array, length); 244 external callSetLength(List array, length);
237 245
238 @Js() 246 @Js()
239 external getValue(obj, index); 247 external getValue(obj, index);
240 248
241 @Js() 249 @Js()
242 external setValue(obj, index, value); 250 external setValue(obj, index, value);
243 251
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 500
493 test("is array", () { 501 test("is array", () {
494 var list = ["a", "b"]; 502 var list = ["a", "b"];
495 expect(checkIsArray(list), isTrue); 503 expect(checkIsArray(list), isTrue);
496 }); 504 });
497 505
498 test("property descriptors", () { 506 test("property descriptors", () {
499 // This test matters to make behavior consistent with JS native arrays 507 // This test matters to make behavior consistent with JS native arrays
500 // and to make devtools integration work well. 508 // and to make devtools integration work well.
501 var list = ["a", "b"]; 509 var list = ["a", "b"];
502 expect(getOwnPropertyDescriptorJson(list, 0), 510 var descriptor = getOwnPropertyDescriptor(list, 0);
503 equals('{"value":"a",'
504 '"writable":true,'
505 '"enumerable":true,'
506 '"configurable":true}'));
507 511
508 expect( 512 expect(descriptor.value, equals("a"));
509 getOwnPropertyDescriptorJson(list, "length"), 513 expect(descriptor.writable, isTrue);
510 equals('{"value":2,' 514 expect(descriptor.enumerable, isTrue);
511 '"writable":true,' 515 expect(descriptor.configurable, isTrue);
512 '"enumerable":false,' 516
513 '"configurable":false}')); 517 descriptor = getOwnPropertyDescriptor(list, "length");
518 expect(descriptor.value, equals(2));
519 expect(descriptor.writable, isTrue);
520 expect(descriptor.enumerable, isFalse);
521 expect(descriptor.configurable, isFalse);
514 }); 522 });
515 523
516 test("concat js arrays", () { 524 test("concat js arrays", () {
517 var list = ["1", "2"]; 525 var list = ["1", "2"];
518 // Tests that calling the concat method from JS will flatten out JS arrays 526 // Tests that calling the concat method from JS will flatten out JS arrays
519 // We concat the array with "a", "b", ["c", "d"], 42, {foo: 10} 527 // We concat the array with "a", "b", ["c", "d"], 42, {foo: 10}
520 // which should generate ["1", "2", "a", "b", ["c", "d"], 42, {foo: 10}] 528 // which should generate ["1", "2", "a", "b", ["c", "d"], 42, {foo: 10}]
521 var ret = concatValues(list); 529 var ret = concatValues(list);
522 expect(list.length, equals(2)); 530 expect(list.length, equals(2));
523 expect(ret.length, equals(8)); 531 expect(ret.length, equals(8));
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 test('opaque proxy', () { 681 test('opaque proxy', () {
674 // Dartium could easily support making LinkedList and all other classes 682 // Dartium could easily support making LinkedList and all other classes
675 // implementing List behave like a JavaScript array but that would 683 // implementing List behave like a JavaScript array but that would
676 // be challenging to implement in dart2js until browsers support ES6. 684 // be challenging to implement in dart2js until browsers support ES6.
677 var list = ["a", "b", "c", "d"]; 685 var list = ["a", "b", "c", "d"];
678 var listView = new UnmodifiableListView(list.getRange(1,3)); 686 var listView = new UnmodifiableListView(list.getRange(1,3));
679 expect(listView is List, isTrue); 687 expect(listView is List, isTrue);
680 expect(listView.length, equals(2)); 688 expect(listView.length, equals(2));
681 expect(checkIsArray(listView), isFalse); 689 expect(checkIsArray(listView), isFalse);
682 expect(checkIsArray(listView.toList()), isTrue); 690 expect(checkIsArray(listView.toList()), isTrue);
683 expect(getOwnPropertyDescriptorJson( 691 expect(getOwnPropertyDescriptor(
684 listView, "length"), equals("null")); 692 listView, "length"), equals(null));
685 }); 693 });
686 }); 694 });
687 */ 695 */
688 } 696 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698