/** * Copyright (c) 2005-2012 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * Created on Oct 14, 2004 * * @author Fabio Zadrozny */ package org.python.pydev.debug.codecoverage; import java.io.File; import java.util.List; import java.util.TreeSet; import junit.framework.TestCase; /** * @author Fabio Zadrozny */ public class CoverageCacheTest extends TestCase { private CoverageCache cache; public static void main(String[] args) { junit.textui.TestRunner.run(CoverageCacheTest.class); } /* * @see TestCase#setUp() */ @Override protected void setUp() throws Exception { super.setUp(); cache = new CoverageCache(); } /* * @see TestCase#tearDown() */ @Override protected void tearDown() throws Exception { super.tearDown(); } public void testAddRoot() throws NodeNotFoudException { File folder1 = new File("a"); //all files File folder2 = new File("a.b"); //no files File folder3 = new File("a.c"); //file3 and file4 + file5 File folder4 = new File("a.c.d"); //only file5 File file1 = new File("b"); File file2 = new File("c"); File file3 = new File("d"); File file4 = new File("e"); File file5 = new File("fgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"); cache.addFolder(folder1); cache.addFolder(folder2, folder1); cache.addFolder(folder3, folder1); cache.addFolder(folder4, folder3); cache.addFile(file1, folder1, 20, 10, "6-10"); cache.addFile(file2, folder1, 22, 10, "6-10"); cache.addFile(file3, folder3, 24, 10, "6-10"); cache.addFile(file4, folder3, 26, 10, "6-10"); cache.addFile(file5, folder4, 28, 10, "6-10"); List<ICoverageNode> folder1files = cache.getFiles(folder1); assertEquals(5, folder1files.size()); List<ICoverageNode> folder2files = cache.getFiles(folder2); assertEquals(0, folder2files.size()); List<ICoverageNode> folder3files = cache.getFiles(folder3); assertEquals(3, folder3files.size()); List<ICoverageNode> folder4files = cache.getFiles(folder4); assertEquals(1, folder4files.size()); assertEquals(folder4files, cache.getFiles(file5)); String statistics = cache.getStatistics(null, folder1).o1; String expected = "" + "Name Stmts Miss Cover Missing\n" + "-----------------------------------------------------------------------------\n" + "b 20 10 50% 6-10\n" + "c 22 10 54,5% 6-10\n" + "d 24 10 58,3% 6-10\n" + "e 26 10 61,5% 6-10\n" + "..gggggggggggggggggggggggggggggggggggggg 28 10 64,3% 6-10\n" + "-----------------------------------------------------------------------------\n" + "TOTAL 120 50 58,3% \n" + ""; if (!expected.equals(statistics) && !expected.replace(',', '.').equals(statistics)) { assertEquals(expected, statistics); } } public void testXmlCoverage() throws Exception { TreeSet<Integer> missedLines = new TreeSet<>(); missedLines.add(1); missedLines.add(5); missedLines.add(6); missedLines.add(8); assertEquals("1, 5-6, 8", CoverageXmlInfo.FillCacheFromXmlHandler.calculateMissingBuf(missedLines)); missedLines = new TreeSet<>(); missedLines.add(1); assertEquals("1", CoverageXmlInfo.FillCacheFromXmlHandler.calculateMissingBuf(missedLines)); missedLines = new TreeSet<>(); assertEquals("", CoverageXmlInfo.FillCacheFromXmlHandler.calculateMissingBuf(missedLines)); missedLines = new TreeSet<>(); missedLines.add(1); missedLines.add(2); missedLines.add(3); assertEquals("1-3", CoverageXmlInfo.FillCacheFromXmlHandler.calculateMissingBuf(missedLines)); missedLines = new TreeSet<>(); missedLines.add(1); missedLines.add(2); missedLines.add(22); assertEquals("1-2, 22", CoverageXmlInfo.FillCacheFromXmlHandler.calculateMissingBuf(missedLines)); } }