13d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom/*
23d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * Copyright (C) 2011 The Android Open Source Project
33d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom *
43d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License");
53d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * you may not use this file except in compliance with the License.
63d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * You may obtain a copy of the License at
73d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom *
83d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom *      http://www.apache.org/licenses/LICENSE-2.0
93d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom *
103d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * Unless required by applicable law or agreed to in writing, software
113d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS,
123d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * See the License for the specific language governing permissions and
143d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom * limitations under the License.
153d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom */
163d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
173d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrompublic final class Main {
183d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
193d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    public static void main(String[] args) throws Exception {
203d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        System.out.println("Test Started");
213d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        testMissingFieldType();
223d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        testMissingMethodReturnType();
233d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        testMissingMethodParameterType();
243d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        testMissingInnerClass();
253d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        System.out.println("Test Finished");
263d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
273d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
283d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static class ClassWithMissingFieldType {
293d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        MissingClass field;
303d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
313d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
323d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static void testMissingFieldType() throws Exception {
333d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        try {
343d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            ClassWithMissingFieldType.class.getDeclaredFields();
353d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            throw new AssertionError();
363d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        } catch (NoClassDefFoundError e) {
373d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            System.out.println("testMissingFieldType caught NoClassDefFoundError");
383d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        }
393d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
403d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
413d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static class ClassWithMissingMethodReturnType {
423d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        MissingClass method() {
433d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            return null;
443d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        }
453d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
463d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
473d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static void testMissingMethodReturnType() throws Exception {
483d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        try {
493d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            ClassWithMissingMethodReturnType.class.getDeclaredMethods();
503d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            throw new AssertionError();
513d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        } catch (NoClassDefFoundError e) {
523d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            System.out.println("testMissingMethodReturnType caught NoClassDefFoundError");
533d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        }
543d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
553d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
563d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static class ClassWithMissingMethodParameterType {
573d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        void method(MissingClass arg) {}
583d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
593d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
603d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static void testMissingMethodParameterType() throws Exception {
613d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        try {
623d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            ClassWithMissingMethodParameterType.class.getDeclaredMethods();
633d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            throw new AssertionError();
643d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        } catch (NoClassDefFoundError e) {
653d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            System.out.println("testMissingMethodParameterType caught NoClassDefFoundError");
663d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        }
673d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
683d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
693d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static final class MissingInnerClass {
703d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
713d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom
723d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    private static void testMissingInnerClass() throws Exception {
733d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        try {
743d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            Main.class.getDeclaredClasses();
753d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            throw new AssertionError();
763d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        } catch (NoClassDefFoundError e) {
773d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom            System.out.println("testMissingInnerClass caught NoClassDefFoundError");
783d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom        }
793d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom    }
803d434d4d3b32ec4b4de35f885993a042b8fae5bbBrian Carlstrom}
81