1764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann/******************************************************************************* 2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 3764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * All rights reserved. This program and the accompanying materials 4764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0 5764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * which accompanies this distribution, and is available at 6764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html 7764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * 8764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * Contributors: 9764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * Marc R. Hoffmann - initial API and implementation 10764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * 11764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann *******************************************************************************/ 12764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannpackage org.jacoco.report.internal.html.page; 13764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 14764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport static org.junit.Assert.assertEquals; 15764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 16764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport java.io.IOException; 17764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport java.io.Reader; 18764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport java.util.Arrays; 19764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport java.util.Collections; 20764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 21764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.analysis.IClassCoverage; 22764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.analysis.IPackageCoverage; 23764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.analysis.ISourceFileCoverage; 24764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.internal.analysis.ClassCoverageImpl; 25764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.internal.analysis.PackageCoverageImpl; 26764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.core.internal.analysis.SourceFileCoverageImpl; 27764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.jacoco.report.ISourceFileLocator; 28764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.junit.Before; 29764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.junit.Test; 30764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannimport org.w3c.dom.Document; 31764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 32764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann/** 33764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann * Unit tests for {@link PackageSourcePage}. 34764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann */ 35764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmannpublic class PackagePageTest extends PageTestBase { 36764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 37764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann private IPackageCoverage node; 38764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann private ISourceFileLocator sourceLocator; 39764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 40764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann private PackagePage page; 41764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 42764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann @Before 43764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann @Override 44764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann public void setup() throws Exception { 45764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann super.setup(); 46764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann sourceLocator = new ISourceFileLocator() { 47764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 48764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann public int getTabWidth() { 49764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann return 4; 50764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann } 51764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 52764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann public Reader getSourceFile(String packageName, String fileName) 53764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann throws IOException { 54764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann return null; 55764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann } 56764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann }; 57764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann } 58764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 59764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann @Test 60764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann public void testContentsWithSource() throws Exception { 61764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann IClassCoverage class1 = new ClassCoverageImpl( 62f4622217085198f3ae42906934026961b29d1111Marc R. Hoffmann "org/jacoco/example/Foo1", 0x1000, false); 63764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann IClassCoverage class2 = new ClassCoverageImpl( 64f4622217085198f3ae42906934026961b29d1111Marc R. Hoffmann "org/jacoco/example/Foo2", 0x2000, false); 65764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann ISourceFileCoverage src1 = new SourceFileCoverageImpl("Src1.java", 66764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann "org/jacoco/example"); 67764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann node = new PackageCoverageImpl("org/jacoco/example", Arrays.asList( 68764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann class1, class2), Arrays.asList(src1)); 69764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 70764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann page = new PackagePage(node, null, sourceLocator, rootFolder, context); 71764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann page.render(); 72764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 73764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann final Document doc = support.parse(output.getFile("index.html")); 74764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 75764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann // Expect "Source Files" links 76764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("index.source.html", 77764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/div[1]/span[1]/a/@href")); 78764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("el_source", 79764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/div[1]/span[1]/a/@class")); 80764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("Source Files", 81764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/div[1]/span[1]/a")); 82764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("el_class", support.findStr(doc, 83764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann "/html/body/table[1]/tbody/tr[1]/td[1]/a/@class")); 84764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("Foo1", 85764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/table[1]/tbody/tr[1]/td[1]/a")); 86764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("el_class", support.findStr(doc, 87764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann "/html/body/table[1]/tbody/tr[2]/td[1]/a/@class")); 88764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("Foo2", 89764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/table[1]/tbody/tr[2]/td[1]/a")); 90764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 91764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann output.assertFile("index.source.html"); 92764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann } 93764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 94764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann @Test 95764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann public void testContentsNoSource() throws Exception { 96764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann IClassCoverage class1 = new ClassCoverageImpl( 97f4622217085198f3ae42906934026961b29d1111Marc R. Hoffmann "org/jacoco/example/Foo1", 0x1000, false); 98764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann IClassCoverage class2 = new ClassCoverageImpl( 99f4622217085198f3ae42906934026961b29d1111Marc R. Hoffmann "org/jacoco/example/Foo2", 0x2000, false); 100764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann node = new PackageCoverageImpl("org/jacoco/example", Arrays.asList( 101764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann class1, class2), Collections.<ISourceFileCoverage> emptyList()); 102764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 103764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann page = new PackagePage(node, null, sourceLocator, rootFolder, context); 104764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann page.render(); 105764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 106764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann // Expect no "Source Files" link 107764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann final Document doc = support.parse(output.getFile("index.html")); 108764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann assertEquals("Sessions", 109764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann support.findStr(doc, "/html/body/div[1]/span[1]/a")); 110764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 111764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann // Expect no source files page: 112764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann output.assertNoFile("index.source.html"); 113764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann } 114764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann 115764ea21c9225e037a8d7cbb3a24626ee9c2a01ecMarc R. Hoffmann} 116