| Index: frog/tests/frog_native/native_checked_arguments1_frog_test.dart
|
| ===================================================================
|
| --- frog/tests/frog_native/native_checked_arguments1_frog_test.dart (revision 8644)
|
| +++ frog/tests/frog_native/native_checked_arguments1_frog_test.dart (working copy)
|
| @@ -1,138 +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 that type checks occur on native methods.
|
| -
|
| -class A native "*A" {
|
| - int foo(int x) native;
|
| - int cmp(A other) native;
|
| -}
|
| -
|
| -class B native "*B" {
|
| - String foo(String x) native;
|
| - int cmp(B other) native;
|
| -}
|
| -
|
| -A makeA() native { return new A(); }
|
| -B makeB() native { return new B(); }
|
| -
|
| -void setup() native """
|
| -function A() {}
|
| -A.prototype.foo = function (x) { return x + 1; };
|
| -A.prototype.cmp = function (x) { return 0; };
|
| -
|
| -function B() {}
|
| -B.prototype.foo = function (x) { return x + 'ha!'; };
|
| -B.prototype.cmp = function (x) { return 1; };
|
| -
|
| -makeA = function(){return new A;};
|
| -makeB = function(){return new B;};
|
| -""";
|
| -
|
| -expectThrows(action()) {
|
| - bool threw = false;
|
| - try {
|
| - action();
|
| - } catch (var e) {
|
| - threw = true;
|
| - }
|
| - Expect.isTrue(threw);
|
| -}
|
| -
|
| -checkedModeTest() {
|
| - var things = [makeA(), makeB()];
|
| - var a = things[0];
|
| - var b = things[1];
|
| -
|
| - Expect.equals(124, a.foo(123));
|
| - expectThrows(() => a.foo('xxx'));
|
| -
|
| - Expect.equals('helloha!', b.foo('hello'));
|
| - expectThrows(() => b.foo(123));
|
| -
|
| - Expect.equals(0, a.cmp(a));
|
| - expectThrows(() => a.cmp(b));
|
| - expectThrows(() => a.cmp(5));
|
| -
|
| - Expect.equals(1, b.cmp(b));
|
| - expectThrows(() => b.cmp(a));
|
| - expectThrows(() => b.cmp(5));
|
| -
|
| - // Check that we throw the same errors when the locals are typed.
|
| - A aa = things[0];
|
| - B bb = things[1];
|
| -
|
| - Expect.equals(124, aa.foo(123));
|
| - expectThrows(() => aa.foo('xxx'));
|
| -
|
| - Expect.equals('helloha!', bb.foo('hello'));
|
| - expectThrows(() => bb.foo(123));
|
| -
|
| - Expect.equals(0, aa.cmp(aa));
|
| - expectThrows(() => aa.cmp(bb));
|
| - expectThrows(() => aa.cmp(5));
|
| -
|
| - Expect.equals(1, bb.cmp(bb));
|
| - expectThrows(() => bb.cmp(aa));
|
| - expectThrows(() => bb.cmp(5));
|
| -}
|
| -
|
| -uncheckedModeTest() {
|
| - var things = [makeA(), makeB()];
|
| - var a = things[0];
|
| - var b = things[1];
|
| -
|
| - Expect.equals(124, a.foo(123));
|
| - Expect.equals('xxx1', a.foo('xxx'));
|
| -
|
| - Expect.equals('helloha!', b.foo('hello'));
|
| - Expect.equals('123ha!', b.foo(123));
|
| -
|
| - Expect.equals(0, a.cmp(a));
|
| - Expect.equals(0, a.cmp(b));
|
| - Expect.equals(0, a.cmp(5));
|
| -
|
| - Expect.equals(1, b.cmp(b));
|
| - Expect.equals(1, b.cmp(a));
|
| - Expect.equals(1, b.cmp(5));
|
| -
|
| - // Check that we do not throw errors when the locals are typed.
|
| - A aa = things[0];
|
| - B bb = things[1];
|
| -
|
| - Expect.equals(124, aa.foo(123));
|
| - Expect.equals('xxx1', aa.foo('xxx'));
|
| -
|
| - Expect.equals('helloha!', bb.foo('hello'));
|
| - Expect.equals('123ha!', bb.foo(123));
|
| -
|
| - Expect.equals(0, aa.cmp(aa));
|
| - Expect.equals(0, aa.cmp(bb));
|
| - Expect.equals(0, aa.cmp(5));
|
| -
|
| - Expect.equals(1, bb.cmp(bb));
|
| - Expect.equals(1, bb.cmp(aa));
|
| - Expect.equals(1, bb.cmp(5));
|
| -}
|
| -
|
| -bool isCheckedMode() {
|
| - var stuff = [1, 'string'];
|
| - var a = stuff[0];
|
| - // Checked-mode detection.
|
| - try {
|
| - String s = a;
|
| - return false;
|
| - } catch (var e) { }
|
| - return true;
|
| -}
|
| -
|
| -main() {
|
| - setup();
|
| -
|
| - if (isCheckedMode()) {
|
| - checkedModeTest();
|
| - } else {
|
| - uncheckedModeTest();
|
| - }
|
| -}
|
|
|