| Index: frog/tests/frog_native/native_class_inheritance3_frog_test.dart
|
| ===================================================================
|
| --- frog/tests/frog_native/native_class_inheritance3_frog_test.dart (revision 8644)
|
| +++ frog/tests/frog_native/native_class_inheritance3_frog_test.dart (working copy)
|
| @@ -1,97 +0,0 @@
|
| -// Copyright (c) 2011, 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.
|
| -
|
| -// Test to see if resolving a hidden native class's method to noSuchMethod
|
| -// interferes with subsequent resolving of the method. This might happen if the
|
| -// noSuchMethod is cached on Object.prototype.
|
| -
|
| -class A1 native "*A1" {
|
| -}
|
| -
|
| -class B1 extends A1 native "*B1" {
|
| -}
|
| -
|
| -makeA1() native;
|
| -makeB1() native;
|
| -
|
| -
|
| -class A2 native "*A2" {
|
| - foo([a=99]) native;
|
| -}
|
| -
|
| -class B2 extends A2 native "*B2" {
|
| -}
|
| -
|
| -makeA2() native;
|
| -makeB2() native;
|
| -
|
| -makeObject() native;
|
| -
|
| -void setup() native """
|
| -// This code is all inside 'setup' and so not accesible from the global scope.
|
| -function inherits(child, parent) {
|
| - if (child.prototype.__proto__) {
|
| - child.prototype.__proto__ = parent.prototype;
|
| - } else {
|
| - function tmp() {};
|
| - tmp.prototype = parent.prototype;
|
| - child.prototype = new tmp();
|
| - child.prototype.constructor = child;
|
| - }
|
| -}
|
| -function A1(){}
|
| -function B1(){}
|
| -inherits(B1, A1);
|
| -
|
| -makeA1 = function(){return new A1};
|
| -makeB1 = function(){return new B1};
|
| -
|
| -function A2(){}
|
| -function B2(){}
|
| -inherits(B2, A2);
|
| -A2.prototype.foo = function(a){return 'A2.foo(' + a + ')';}
|
| -
|
| -makeA2 = function(){return new A2};
|
| -makeB2 = function(){return new B2};
|
| -
|
| -makeObject = function(){return new Object};
|
| -""";
|
| -
|
| -
|
| -main() {
|
| - setup();
|
| -
|
| - var a1 = makeA1();
|
| - var b1 = makeB1();
|
| - var ob = makeObject();
|
| -
|
| - // Does calling missing methods in one tree of inheritance forest affect other
|
| - // trees?
|
| - expectNoSuchMethod(() => b1.foo(), 'b1.foo()');
|
| - expectNoSuchMethod(() => a1.foo(), 'a1.foo()');
|
| - expectNoSuchMethod(() => ob.foo(), 'ob.foo()');
|
| -
|
| - var a2 = makeA2();
|
| - var b2 = makeB2();
|
| -
|
| - Expect.equals('A2.foo(99)', a2.foo());
|
| - Expect.equals('A2.foo(99)', b2.foo());
|
| - Expect.equals('A2.foo(1)', a2.foo(1));
|
| - Expect.equals('A2.foo(2)', b2.foo(2));
|
| -
|
| -
|
| - expectNoSuchMethod(() => b1.foo(3), 'b1.foo(3)');
|
| - expectNoSuchMethod(() => a1.foo(4), 'a1.foo(4)');
|
| -}
|
| -
|
| -expectNoSuchMethod(action, note) {
|
| - bool caught = false;
|
| - try {
|
| - action();
|
| - } catch (var ex) {
|
| - caught = true;
|
| - Expect.isTrue(ex is NoSuchMethodException, note);
|
| - }
|
| - Expect.isTrue(caught, note);
|
| -}
|
|
|