1497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann/******************************************************************************* 2f9c5b2a802d905e7c47b1ba0d3a0ef88cd569208Marc R. Hoffmann * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors 3497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * All rights reserved. This program and the accompanying materials 4497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0 5497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * which accompanies this distribution, and is available at 6497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html 7497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * 8497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * Contributors: 9497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * Marc R. Hoffmann - initial API and implementation 10497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * 11497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann *******************************************************************************/ 12497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannpackage org.jacoco.examples; 13497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 14497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport static org.jacoco.examples.ConsoleOutput.containsLine; 15497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 16497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport java.io.File; 17497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport java.io.FileOutputStream; 18497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport java.io.IOException; 19497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport java.io.InputStream; 20497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 21497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport org.junit.Rule; 22497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannimport org.junit.Test; 23497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 24497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann/** 25497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann * Tests for {@link ClassInfo}. 26497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann */ 27497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmannpublic class ClassInfoTest { 28497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 29497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann @Rule 30497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann public ConsoleOutput console = new ConsoleOutput(); 31497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 32497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann @Test 33497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann public void testRunExample() throws Exception { 34497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 35497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann final String[] args = new String[] { createClassFile() }; 36497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann new ClassInfo(console.stream).execute(args); 37497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 38497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann console.expect(containsLine("class name: org/jacoco/examples/ClassInfoTest")); 39497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann console.expect(containsLine("methods: 3")); 40497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann console.expect(containsLine("branches: 2")); 41497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann console.expect(containsLine("complexity: 4")); 42497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann } 43497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann 44497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann private String createClassFile() throws IOException { 45497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann InputStream in = getClass().getResource( 46497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann getClass().getSimpleName() + ".class").openStream(); 47497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann File f = File.createTempFile("Example", ".class"); 48497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann FileOutputStream out = new FileOutputStream(f); 49497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann int b; 50497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann while ((b = in.read()) != -1) { 51497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann out.write(b); 52497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann } 53497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann in.close(); 54497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann out.close(); 55497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann return f.getPath(); 56497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann } 57497fb3fd0f85b5dd4b7d240f99dc0bc3811d939cMarc R. Hoffmann} 58