Package hudson.plugins.cobertura

Source Code of hudson.plugins.cobertura.CoberturaCoverageParserTest

package hudson.plugins.cobertura;

import junit.framework.TestCase;
import hudson.plugins.cobertura.targets.CoverageResult;
import hudson.plugins.cobertura.targets.CoverageMetric;

import java.io.InputStream;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.HashSet;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import org.jvnet.hudson.test.Bug;
import org.netbeans.insane.scanner.CountingVisitor;
import org.netbeans.insane.scanner.ScannerUtils;

/**
* Unit tests for {@link CoberturaCoverageParser}.
*
* @author Stephen Connolly
* @version 1.0
* @author davidmc24
*/
public class CoberturaCoverageParserTest extends TestCase {
    public CoberturaCoverageParserTest(String name) {
        super(name);
    }

    public void testFailureMode1() throws Exception {
        try {
            CoberturaCoverageParser.parse((InputStream)null, null);
        } catch (NullPointerException e) {
            assertTrue("Expected exception thrown", true);
        }
    }

    public void print(CoverageResult r, int d) {
        System.out.print("                    ".substring(0, d*2));
        System.out.print(r.getElement() + "[" + r.getName() + "]");
        for (CoverageMetric m : r.getMetrics()) {
            System.out.print(" " + m + "=" + r.getCoverage(m));
        }
        System.out.println();
        for (String child: r.getChildren()) {
            print(r.getChild(child), d + 1);
        }
    }

    public void testParse() throws Exception {
        Set<String> paths = new HashSet<String>();
        CoverageResult result = CoberturaCoverageParser.parse(getClass().getResourceAsStream("coverage.xml"), null, paths);
        result.setOwner(null);
        print(result, 0);
        assertNotNull(result);
        assertEquals(CoverageResult.class, result.getClass());
        assertEquals(Messages.CoberturaCoverageParser_name(), result.getName());
//        assertEquals(10, result.getMethods());
        assertEquals(2, result.getChildren().size());
        CoverageResult subResult = result.getChild("<default>");
        assertEquals("<default>", subResult.getName());
        assertEquals(1, subResult.getChildren().size());
        assertEquals(Ratio.create(0, 3), subResult.getCoverage(CoverageMetric.METHOD));
        assertEquals(Ratio.create(0, 11), subResult.getCoverage(CoverageMetric.LINE));
        subResult = result.getChild("search");
        assertEquals("search", subResult.getName());
        assertEquals(3, subResult.getChildren().size());
        assertEquals(Ratio.create(0, 19), subResult.getCoverage(CoverageMetric.LINE));
        assertEquals(Ratio.create(0, 12), subResult.getCoverage(CoverageMetric.CONDITIONAL));
        assertEquals(Ratio.create(0, 4), subResult.getCoverage(CoverageMetric.METHOD));
        assertEquals(1, paths.size());
    }

    public void testParse2() throws Exception {
        CoverageResult result = CoberturaCoverageParser.parse(getClass().getResourceAsStream("coverage-with-data.xml"), null);
        result.setOwner(null);
        print(result, 0);
        assertNotNull(result);
        assertEquals(CoverageResult.class, result.getClass());
        assertEquals(Messages.CoberturaCoverageParser_name(), result.getName());
//        assertEquals(10, result.getMethods());
        assertEquals(2, result.getChildren().size());
        CoverageResult subResult = result.getChild("<default>");
        assertEquals("<default>", subResult.getName());
        assertEquals(1, subResult.getChildren().size());
        assertEquals(Ratio.create(3, 3), subResult.getCoverage(CoverageMetric.METHOD));
        assertEquals(Ratio.create(11, 11), subResult.getCoverage(CoverageMetric.LINE));
        subResult = result.getChild("search");
        assertEquals("search", subResult.getName());
        assertEquals(3, subResult.getChildren().size());
        assertEquals(Ratio.create(16, 19), subResult.getCoverage(CoverageMetric.LINE));
        assertEquals(Ratio.create(9, 12), subResult.getCoverage(CoverageMetric.CONDITIONAL));
        assertEquals(Ratio.create(4, 4), subResult.getCoverage(CoverageMetric.METHOD));
    }

    @Bug(16252)
    public void testParse_NotRelativeSourcePath() throws Exception {
        Set<String> paths = new HashSet<String>();
        CoverageResult result = CoberturaCoverageParser.parse(getClass().getResourceAsStream("coverage_16252.xml"), null, paths);
        result.setOwner(null);
        print(result, 0);
        assertNotNull(result);
        assertEquals(CoverageResult.class, result.getClass());
        assertEquals(Messages.CoberturaCoverageParser_name(), result.getName());  
       
        assertEquals(4, result.getChildren().size());
        CoverageResult subResult = result.getChild("Common");
        assertEquals("Common", subResult.getName());

        CoverageResult sub2Result = subResult.getChild("CommonLibrary/ProfilerTest.cpp");
        assertNotNull(sub2Result);
        assertEquals("CommonLibrary/ProfilerTest.cpp", sub2Result.getRelativeSourcePath());
       
   
   
    public void testParseMultiPackage() throws Exception {
//        ProjectCoverage result = CoberturaCoverageParser.parse(getClass().getResourceAsStream("coverage-two-packages.xml"));
//        result = CoberturaCoverageParser.trimPaths(result, "C:\\local\\maven\\helpers\\hudson\\cobertura\\");
//        assertNotNull(result);
//        assertEquals(ProjectCoverage.class, result.getClass());
//        assertEquals("Maven Cloverreport", result.getName());
////        assertEquals(40, result.getMethods());
//        assertEquals(2, result.getPackageCoverages().size());
////        assertEquals(14, result.findClassCoverage("hudson.plugins.cobertura.results.AbstractCloverMetrics").getCoveredmethods());
    }
   
    /**
     * Tests the memory usage of
     * {@link CoberturaCoverageParser#parse(InputStream, CoverageResult, Set)}.
     *
     * @since 28-Apr-2009
     */
    public void testParseMemoryUsage() throws Exception {
        Map<String,Integer> files = new LinkedHashMap<String,Integer>();
        files.put("coverage.xml", 16152);
        files.put("coverage-with-data.xml", 16232);
        files.put("coverage-with-lots-of-data.xml", 298960);
       
        for (Map.Entry<String,Integer> e : files.entrySet()) {
            final String fileName = e.getKey();
            InputStream in = getClass().getResourceAsStream(fileName);
            CoverageResult result = CoberturaCoverageParser.parse(in, null, null);
            result.setOwner(null);
            assertMaxMemoryUsage(fileName + " results", result, e.getValue());
        }
    }
   
    /**
     * Tests the memory usage of a specified object.
     * The memory usage is then compared with the specified
     * maximum desired memory usage.  If the average memory usage is greater
     * than the specified number, it will be reported as a failed assertion.
     *
     * @param description a plain-text description, to be used
     *          in diagnostic messages
     * @param o the object to measure
     * @param maxMemoryUsage the maximum desired memory usage for the Callable,
     *          in bytes
     */
    private static void assertMaxMemoryUsage(String description, Object o, int maxMemoryUsage) throws Exception {
        CountingVisitor v = new CountingVisitor();
        ScannerUtils.scan(null, v, Collections.singleton(o), false);
        long memoryUsage = v.getTotalSize();
        String message = description + " consume " + memoryUsage + " bytes of memory on average, " + (memoryUsage - maxMemoryUsage) + " bytes more than the specified limit of " + maxMemoryUsage + " bytes";
        assertTrue(message, memoryUsage <= maxMemoryUsage);
        System.out.println(description + " consume " + memoryUsage + "/" + maxMemoryUsage + " bytes of memory");
    }

}
TOP

Related Classes of hudson.plugins.cobertura.CoberturaCoverageParserTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.