/******************************************************************************* * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marc R. Hoffmann - initial API and implementation * *******************************************************************************/ package org.jacoco.report.html; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Locale; import org.jacoco.report.ILanguageNames; import org.jacoco.report.MemoryMultiReportOutput; import org.jacoco.report.ReportStructureTestDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * Unit tests for {@link HTMLFormatter}. */ public class HTMLFormatterTest { private ReportStructureTestDriver driver; private HTMLFormatter formatter; private MemoryMultiReportOutput output; @Before public void setup() { driver = new ReportStructureTestDriver(); formatter = new HTMLFormatter(); output = new MemoryMultiReportOutput(); } @After public void teardown() { output.assertAllClosed(); } @Test public void testStructureWithNestedGroups() throws IOException { driver.sendNestedGroups(formatter.createVisitor(output)); output.assertFile("index.html"); output.assertFile("group1/index.html"); output.assertFile("group1/group/index.html"); output.assertFile("group1/group/bundle/index.html"); output.assertFile("bundle/index.html"); } @Test public void testStructureWithGroup() throws IOException { driver.sendGroup(formatter.createVisitor(output)); output.assertFile("index.html"); output.assertFile("bundle/index.html"); output.assertFile("bundle/org.jacoco.example/index.html"); output.assertFile("bundle/org.jacoco.example/FooClass.html"); } @Test public void testStructureWithBundleOnly() throws IOException { driver.sendBundle(formatter.createVisitor(output)); output.assertFile("index.html"); output.assertFile("org.jacoco.example/index.html"); output.assertFile("org.jacoco.example/FooClass.html"); } @Test public void testDefaultEncoding() throws Exception { driver.sendBundle(formatter.createVisitor(output)); final BufferedReader reader = new BufferedReader(new InputStreamReader( output.getFileAsStream("index.html"), "UTF-8")); final String line = reader.readLine(); assertTrue(line, line.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"")); } @Test public void testSetEncoding() throws Exception { formatter.setOutputEncoding("UTF-16"); driver.sendBundle(formatter.createVisitor(output)); final BufferedReader reader = new BufferedReader(new InputStreamReader( output.getFileAsStream("index.html"), "UTF-16")); final String line = reader.readLine(); assertTrue(line, line.startsWith("<?xml version=\"1.0\" encoding=\"UTF-16\"")); } @Test public void testGetLanguageNames() throws Exception { ILanguageNames names = new ILanguageNames() { public String getPackageName(String vmname) { return null; } public String getQualifiedClassName(String vmname) { return null; } public String getClassName(String vmname, String vmsignature, String vmsuperclass, String[] vminterfaces) { return null; } public String getMethodName(String vmclassname, String vmmethodname, String vmdesc, String vmsignature) { return null; } public String getQualifiedMethodName(String vmclassname, String vmmethodname, String vmdesc, String vmsignature) { return null; } }; formatter.setLanguageNames(names); assertSame(names, formatter.getLanguageNames()); output.close(); } @Test public void testGetFooterText() throws Exception { formatter.setFooterText("Custom Footer"); assertEquals("Custom Footer", formatter.getFooterText()); output.close(); } @Test public void testGetLocale() throws Exception { formatter.setLocale(Locale.KOREAN); assertEquals(Locale.KOREAN, formatter.getLocale()); output.close(); } }