Chromium Code Reviews| Index: tests/compiler/dart2js_native/runtimetype_test.dart |
| diff --git a/tests/compiler/dart2js_native/runtimetype_test.dart b/tests/compiler/dart2js_native/runtimetype_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e6d99f0008fb32e33497af037cebc434d0d85ffe |
| --- /dev/null |
| +++ b/tests/compiler/dart2js_native/runtimetype_test.dart |
| @@ -0,0 +1,65 @@ |
| +// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
|
karlklose
2013/04/24 14:27:28
2011 -> 2013.
sra1
2013/04/24 17:32:43
Done.
|
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +import "package:expect/expect.dart"; |
| +import 'dart:_foreign_helper' show JS; |
| + |
| +// Test to see runtimeType works on native classes and does not use the native |
| +// constructor name. |
| + |
| +class A native "TAGX" { |
| +} |
| + |
| +class B extends A native "TAGY" { |
| +} |
| + |
| +makeA() native; |
| +makeB() native; |
| + |
| +void setup() native """ |
| +// This code is all inside 'setup' and so not accesible from the global scope. |
| +function inherits(child, parent) { |
| + function tmp() {}; |
| + tmp.prototype = parent.prototype; |
| + child.prototype = new tmp(); |
| + child.prototype.constructor = child; |
| +} |
| + |
| +function TAGX(){} |
| +function TAGY(){} |
| +inherits(TAGY, TAGX); |
| + |
| +makeA = function(){return new TAGX}; |
| +makeB = function(){return new TAGY}; |
| +"""; |
| + |
| + |
| +testDynamicContext() { |
| + var a = makeA(); |
| + var b = makeB(); |
| + |
| + var aT = a.runtimeType; |
| + var bT = b.runtimeType; |
| + |
| + Expect.notEquals('TAGX', '$aT'); |
| + Expect.notEquals('TAGY', '$bT'); |
| +} |
| + |
| +testStaticContext() { |
| + var a = JS('A', '#', makeA()); // Force compiler to know type. |
| + var b = JS('B', '#', makeB()); |
| + |
| + var aT = a.runtimeType; |
| + var bT = b.runtimeType; |
| + |
| + Expect.notEquals('TAGX', '$aT'); |
| + Expect.notEquals('TAGY', '$bT'); |
| +} |
| + |
| +main() { |
| + setup(); |
| + |
| + testDynamicContext(); |
| + testStaticContext(); |
| +} |