|
Java example source code file (Driver.java)
The Driver.java Java example source code/* * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.lang.annotation.*; import java.lang.reflect.*; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import com.sun.tools.classfile.ClassFile; import com.sun.tools.classfile.TypeAnnotation; import com.sun.tools.classfile.TypeAnnotation.TargetType; public class Driver { private static final PrintStream out = System.out; public static void main(String[] args) throws Exception { if (args.length == 0 || args.length > 1) throw new IllegalArgumentException("Usage: java Driver <test-name>"); String name = args[0]; Class<?> clazz = Class.forName(name); new Driver().runDriver(clazz.newInstance()); } protected void runDriver(Object object) throws Exception { int passed = 0, failed = 0; Class<?> clazz = object.getClass(); out.println("Tests for " + clazz.getName()); // Find methods for (Method method : clazz.getMethods()) { Map<String, TypeAnnotation.Position> expected = expectedOf(method); if (expected == null) continue; if (method.getReturnType() != String.class) throw new IllegalArgumentException("Test method needs to return a string: " + method); String testClass = testClassOf(method); try { String compact = (String)method.invoke(object); String fullFile = wrap(compact); ClassFile cf = compileAndReturn(fullFile, testClass); List<TypeAnnotation> actual = ReferenceInfoUtil.extendedAnnotationsOf(cf); ReferenceInfoUtil.compare(expected, actual, cf); out.println("PASSED: " + method.getName()); ++passed; } catch (Throwable e) { out.println("FAILED: " + method.getName()); out.println(" " + e.toString()); ++failed; } } out.println(); int total = passed + failed; out.println(total + " total tests: " + passed + " PASSED, " + failed + " FAILED"); out.flush(); if (failed != 0) throw new RuntimeException(failed + " tests failed"); } private Map<String, TypeAnnotation.Position> expectedOf(Method m) { TADescription ta = m.getAnnotation(TADescription.class); TADescriptions tas = m.getAnnotation(TADescriptions.class); if (ta == null && tas == null) return null; Map<String, TypeAnnotation.Position> result = new HashMap<String, TypeAnnotation.Position>(); if (ta != null) result.putAll(expectedOf(ta)); if (tas != null) { for (TADescription a : tas.value()) { result.putAll(expectedOf(a)); } } return result; } private Map<String, TypeAnnotation.Position> expectedOf(TADescription d) { String annoName = d.annotation(); TypeAnnotation.Position p = new TypeAnnotation.Position(); p.type = d.type(); if (d.offset() != NOT_SET) p.offset = d.offset(); if (d.lvarOffset().length != 0) p.lvarOffset = d.lvarOffset(); if (d.lvarLength().length != 0) p.lvarLength = d.lvarLength(); if (d.lvarIndex().length != 0) p.lvarIndex = d.lvarIndex(); if (d.boundIndex() != NOT_SET) p.bound_index = d.boundIndex(); if (d.paramIndex() != NOT_SET) p.parameter_index = d.paramIndex(); if (d.typeIndex() != NOT_SET) p.type_index = d.typeIndex(); if (d.exceptionIndex() != NOT_SET) p.exception_index = d.exceptionIndex(); if (d.genericLocation().length != 0) { p.location = TypeAnnotation.Position.getTypePathFromBinary(wrapIntArray(d.genericLocation())); } return Collections.singletonMap(annoName, p); } private List<Integer> wrapIntArray(int[] ints) { List<Integer> list = new ArrayList Other Java examples (source code examples)Here is a short list of links related to this Java Driver.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.