| Index: tests/compiler/dart2js_native/native_testing.dart
|
| diff --git a/tests/compiler/dart2js_native/native_testing.dart b/tests/compiler/dart2js_native/native_testing.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8d90b0b0475c5de10225b4c81fef46b091449122
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js_native/native_testing.dart
|
| @@ -0,0 +1,50 @@
|
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| +// 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.
|
| +
|
| +// Native testing library. Provides support for mock @Native classes and
|
| +// collects common imports.
|
| +
|
| +
|
| +import "package:expect/expect.dart";
|
| +import 'dart:_js_helper' show Native;
|
| +
|
| +export "package:expect/expect.dart";
|
| +export 'dart:_js_helper' show Creates, Native, JSName, Returns;
|
| +export 'dart:_foreign_helper' show JS;
|
| +
|
| +void _setup() native r'''
|
| +((function() {
|
| + var toStringResultProperty = "_toStringResult";
|
| + var objectToStringMethod = Object.prototype.toString;
|
| +
|
| + Object.prototype.toString = function() {
|
| + if (this != null) {
|
| + var constructor = this.constructor;
|
| + if (constructor != null) {
|
| + var result = constructor[toStringResultProperty];
|
| + if (typeof result == "string") return result;
|
| + }
|
| + }
|
| + return objectToStringMethod.call(this);
|
| + }
|
| +
|
| + // To mock a @Native class with JavaScript constructor `Foo`, add
|
| + //
|
| + // self.nativeConstructor(Foo);
|
| + //
|
| + // to the JavaScript code.
|
| + self.nativeConstructor = function(constructor, opt_name) {
|
| + var toStringResult = "[object " + (opt_name || constructor.name) + "]";
|
| + constructor[toStringResultProperty] = toStringResult;
|
| + }
|
| +})());
|
| +''';
|
| +
|
| +void nativeTesting() {
|
| + _setup();
|
| +}
|
| +
|
| +@NoInline()
|
| +@AssumeDynamic()
|
| +confuse(x) => x;
|
|
|