15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/*
25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Copyright (C) 2008 The Android Open Source Project
35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Licensed under the Apache License, Version 2.0 (the "License");
55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * you may not use this file except in compliance with the License.
65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * You may obtain a copy of the License at
75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *      http://www.apache.org/licenses/LICENSE-2.0
95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Unless required by applicable law or agreed to in writing, software
115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * distributed under the License is distributed on an "AS IS" BASIS,
125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * See the License for the specific language governing permissions and
145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * limitations under the License.
155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/**
185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Try different kinds of method calls.
195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class MethodCall extends MethodCallBase {
215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    MethodCall() {
225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        super();
235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("  MethodCall ctor");
245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /* overridden method */
275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    int tryThing() {
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int val = super.tryThing();
29795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(val == 7);
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return val;
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /* do-nothing private instance method */
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    private void directly() {}
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /*
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     * Function with many arguments.
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     */
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void manyArgs(int a0, long a1, int a2, long a3, int a4, long a5,
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int a6, int a7, double a8, float a9, double a10, short a11, int a12,
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        char a13, int a14, int a15, byte a16, boolean a17, int a18, int a19,
425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long a20, long a21, int a22, int a23, int a24, int a25, int a26,
435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        String[][] a27, String[] a28, String a29)
445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    {
455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("MethodCalls.manyArgs");
46795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(a0 == 0);
47795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(a9 > 8.99 && a9 < 9.01);
48795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(a16 == -16);
49795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(a25 == 25);
50795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao        Main.assertTrue(a29.equals("twenty nine"));
515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public static void run() {
545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        MethodCall inst = new MethodCall();
555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        MethodCallBase base = inst;
575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        base.tryThing();
585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        inst.tryThing();
595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        inst = null;
615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        try {
625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            inst.directly();
63795d78f4d04c8d007bf2bdf2ed4131379bcf19c7jeffhao            Main.assertTrue(false);
645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } catch (NullPointerException npe) {
655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            // good
665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        manyArgs(0, 1L, 2, 3L, 4, 5L, 6, 7, 8.0, 9.0f, 10.0, (short)11, 12,
695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            (char)13, 14, 15, (byte)-16, true, 18, 19, 20L, 21L, 22, 23, 24,
705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            25, 26, null, null, "twenty nine");
715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoclass MethodCallBase {
755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    MethodCallBase() {
765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("  MethodCallBase ctor");
775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    int tryThing() {
805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return 7;
815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
83