12103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann/******************************************************************************* 2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 32103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * All rights reserved. This program and the accompanying materials 42103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0 52103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * which accompanies this distribution, and is available at 62103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html 72103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * 82103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * Contributors: 92103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * Marc R. Hoffmann - initial API and implementation 102103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * 112103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann *******************************************************************************/ 122103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannpackage org.jacoco.report.html; 132103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 14ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmannimport static org.junit.Assert.assertEquals; 15ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmannimport static org.junit.Assert.assertSame; 1657225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmannimport static org.junit.Assert.assertTrue; 1757225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann 1857225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmannimport java.io.BufferedReader; 192103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannimport java.io.IOException; 2057225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmannimport java.io.InputStreamReader; 21ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmannimport java.util.Locale; 222103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 23ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmannimport org.jacoco.report.ILanguageNames; 242103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannimport org.jacoco.report.MemoryMultiReportOutput; 252103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannimport org.jacoco.report.ReportStructureTestDriver; 26b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmannimport org.junit.After; 272103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannimport org.junit.Before; 282103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannimport org.junit.Test; 292103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 302103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann/** 312103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann * Unit tests for {@link HTMLFormatter}. 322103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann */ 332103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmannpublic class HTMLFormatterTest { 342103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 352103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann private ReportStructureTestDriver driver; 362103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 372103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann private HTMLFormatter formatter; 382103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 392103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann private MemoryMultiReportOutput output; 402103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 412103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann @Before 422103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann public void setup() { 432103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann driver = new ReportStructureTestDriver(); 442103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann formatter = new HTMLFormatter(); 452103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output = new MemoryMultiReportOutput(); 462103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann } 472103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 48b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmann @After 49b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmann public void teardown() { 50b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmann output.assertAllClosed(); 51b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmann } 52b952d27d3f7844321a85576ff9168835dd17f0eaMarc R. Hoffmann 532103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann @Test 54c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann public void testStructureWithNestedGroups() throws IOException { 55c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann driver.sendNestedGroups(formatter.createVisitor(output)); 56c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann output.assertFile("index.html"); 57c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann output.assertFile("group1/index.html"); 58c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann output.assertFile("group1/group/index.html"); 59c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann output.assertFile("group1/group/bundle/index.html"); 60c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann output.assertFile("bundle/index.html"); 61c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann } 62c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann 63c4613ac5c5d1475e920a4b6d78eac6577dab5882Marc R. Hoffmann @Test 642103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann public void testStructureWithGroup() throws IOException { 6582c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann driver.sendGroup(formatter.createVisitor(output)); 662103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("index.html"); 672103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("bundle/index.html"); 682103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("bundle/org.jacoco.example/index.html"); 692103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("bundle/org.jacoco.example/FooClass.html"); 702103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann } 712103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 722103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann @Test 732103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann public void testStructureWithBundleOnly() throws IOException { 7482c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann driver.sendBundle(formatter.createVisitor(output)); 752103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("index.html"); 762103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("org.jacoco.example/index.html"); 772103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann output.assertFile("org.jacoco.example/FooClass.html"); 782103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann } 792103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann 8057225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann @Test 8157225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann public void testDefaultEncoding() throws Exception { 8282c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann driver.sendBundle(formatter.createVisitor(output)); 8357225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann final BufferedReader reader = new BufferedReader(new InputStreamReader( 8457225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann output.getFileAsStream("index.html"), "UTF-8")); 8557225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann final String line = reader.readLine(); 86ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann assertTrue(line, 87ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann line.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"")); 8857225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann } 8957225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann 9057225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann @Test 9157225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann public void testSetEncoding() throws Exception { 9257225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann formatter.setOutputEncoding("UTF-16"); 9382c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann driver.sendBundle(formatter.createVisitor(output)); 9457225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann final BufferedReader reader = new BufferedReader(new InputStreamReader( 9557225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann output.getFileAsStream("index.html"), "UTF-16")); 9657225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann final String line = reader.readLine(); 97ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann assertTrue(line, 98ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann line.startsWith("<?xml version=\"1.0\" encoding=\"UTF-16\"")); 99ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 100ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 101ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann @Test 102ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public void testGetLanguageNames() throws Exception { 103ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann ILanguageNames names = new ILanguageNames() { 104ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public String getPackageName(String vmname) { 105ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann return null; 106ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 107ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 108ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public String getQualifiedClassName(String vmname) { 109ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann return null; 110ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 111ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 112ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public String getClassName(String vmname, String vmsignature, 113ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann String vmsuperclass, String[] vminterfaces) { 114ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann return null; 115ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 116ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 117ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public String getMethodName(String vmclassname, 118ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann String vmmethodname, String vmdesc, String vmsignature) { 119ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann return null; 120ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 121ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 12255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann public String getQualifiedMethodName(String vmclassname, 12355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann String vmmethodname, String vmdesc, String vmsignature) { 12455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann return null; 12555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann } 126ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann }; 127ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann formatter.setLanguageNames(names); 128ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann assertSame(names, formatter.getLanguageNames()); 12982c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann output.close(); 130ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 131ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 132ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann @Test 133ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public void testGetFooterText() throws Exception { 134ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann formatter.setFooterText("Custom Footer"); 135ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann assertEquals("Custom Footer", formatter.getFooterText()); 13682c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann output.close(); 137ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann } 138ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann 139ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann @Test 140ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann public void testGetLocale() throws Exception { 141ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann formatter.setLocale(Locale.KOREAN); 142ae8c2a836703bf06c07bb3d8a981b5743c62b2efMarc R. Hoffmann assertEquals(Locale.KOREAN, formatter.getLocale()); 14382c11be3dd19fc071f87fedc5782c11ca51a0732Marc R. Hoffmann output.close(); 14457225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann } 14557225d5996f653cf9dd7ef95a62d8829832d219aMarc R. Hoffmann 1462103737f1b78d1ae6a9be72fe6dbf85f56b3c585Marc R. Hoffmann} 147