1d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light/*
2d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Copyright (C) 2015 The Android Open Source Project
3d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light *
4d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Licensed under the Apache License, Version 2.0 (the "License");
5d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * you may not use this file except in compliance with the License.
6d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * You may obtain a copy of the License at
7d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light *
8d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light *      http://www.apache.org/licenses/LICENSE-2.0
9d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light *
10d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Unless required by applicable law or agreed to in writing, software
11d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * distributed under the License is distributed on an "AS IS" BASIS,
12d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * See the License for the specific language governing permissions and
14d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * limitations under the License.
15d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light */
16d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Lightclass Main implements Iface, Iface2, Iface3 {
17d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  public static void main(String[] args) {
18d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Create Main instance");
19d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    Main m = new Main();
20d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling functions on concrete Main");
21d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    callMain(m);
22d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling functions on interface Iface");
23d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    callIface(m);
24d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling functions on interface Iface2");
25d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    callIface2(m);
26d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  }
27d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  public static void callMain(Main m) {
28d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling non-abstract function on Main");
29d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println(m.charge());
30d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling abstract function on Main");
31d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    try {
32d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println(m.sayHi());
33d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected no error Thrown on Main");
34d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (AbstractMethodError e) {
35d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Expected AME Thrown on Main");
36d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (IncompatibleClassChangeError e) {
37d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected ICCE Thrown on Main");
38d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    }
39d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling non-abstract function on Main");
40d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println(m.charge());
41d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    return;
42d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  }
43d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  public static void callIface(Iface m) {
44d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling non-abstract function on Iface");
45d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println(m.charge());
46d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling abstract function on Iface");
47d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    try {
48d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println(m.sayHi());
49d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected no error Thrown on Iface");
50d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (AbstractMethodError e) {
51d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Expected AME Thrown on Iface");
52d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (IncompatibleClassChangeError e) {
53d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected ICCE Thrown on Iface");
54d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    }
55d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling non-abstract function on Iface");
56d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println(m.charge());
57d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    return;
58d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  }
59d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  public static void callIface2(Iface2 m) {
60d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    System.out.println("Calling abstract function on Iface2");
61d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    try {
62d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println(m.sayHi());
63d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected no error Thrown on Iface2");
64d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (AbstractMethodError e) {
65d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Expected AME Thrown on Iface2");
66d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    } catch (IncompatibleClassChangeError e) {
67d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light      System.out.println("Unexpected ICCE Thrown on Iface2");
68d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    }
69d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light    return;
70d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light  }
71d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light}
72