blob: 7983d8d985b3662dd148de20331c03cb1c7674f6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2018 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.internal.html.page;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.jacoco.core.data.ExecutionData;
import org.jacoco.core.data.SessionInfo;
import org.jacoco.report.internal.html.HTMLElement;
import org.jacoco.report.internal.html.index.ElementIndex;
import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.Document;
/**
* Unit tests for {@link SessionsPage}.
*/
public class SessionsPageTest extends PageTestBase {
private final List<SessionInfo> noSessions = Collections.emptyList();
private final Collection<ExecutionData> noExecutionData = Collections
.emptyList();
private ElementIndex index;
@Before
@Override
public void setup() throws Exception {
super.setup();
index = new ElementIndex(rootFolder);
}
@Test
public void testGetLinkStyle() {
final SessionsPage page = new SessionsPage(noSessions, noExecutionData,
index, null, rootFolder, context);
assertEquals("el_session", page.getLinkStyle());
}
@Test
public void testGetFileName() {
final SessionsPage page = new SessionsPage(noSessions, noExecutionData,
index, null, rootFolder, context);
assertEquals("jacoco-sessions.html", page.getFileName());
}
@Test
public void testGetLinkLabel() {
final SessionsPage page = new SessionsPage(noSessions, noExecutionData,
index, null, rootFolder, context);
assertEquals("Sessions", page.getLinkLabel());
}
@Test
public void testEmptyContent() throws Exception {
final SessionsPage page = new SessionsPage(noSessions, noExecutionData,
index, null, rootFolder, context);
page.render();
final Document doc = support.parse(output
.getFile("jacoco-sessions.html"));
assertEquals("No session information available.",
support.findStr(doc, "/html/body/p[1]"));
assertEquals("No execution data available.",
support.findStr(doc, "/html/body/p[2]"));
}
@Test
public void testSessionListContent() throws Exception {
final List<SessionInfo> sessions = new ArrayList<SessionInfo>();
sessions.add(new SessionInfo("Session-A", 0, 0));
sessions.add(new SessionInfo("Session-B", 0, 0));
sessions.add(new SessionInfo("Session-C", 0, 0));
final SessionsPage page = new SessionsPage(sessions, noExecutionData,
index, null, rootFolder, context);
page.render();
final Document doc = support.parse(output
.getFile("jacoco-sessions.html"));
assertEquals("el_session", support.findStr(doc,
"/html/body/table[1]/tbody/tr[1]/td[1]/span/@class"));
assertEquals("Session-A", support.findStr(doc,
"/html/body/table[1]/tbody/tr[1]/td[1]/span"));
assertEquals("Session-B",
support.findStr(doc, "/html/body/table[1]/tbody/tr[2]/td[1]"));
assertEquals("Session-C",
support.findStr(doc, "/html/body/table[1]/tbody/tr[3]/td[1]"));
}
@Test
public void testExecutionDataContent() throws Exception {
final Collection<ExecutionData> data = new ArrayList<ExecutionData>();
data.add(new ExecutionData(0x1000, "ClassB", new boolean[0]));
data.add(new ExecutionData(0x1001, "ClassC", new boolean[0]));
data.add(new ExecutionData(0x1002, "ClassA", new boolean[0]));
index.addClass(new ReportPage(null, rootFolder, context) {
public String getLinkLabel() {
return "Foo";
}
@Override
protected String getFileName() {
return "Foo.html";
}
public String getLinkStyle() {
return "sample";
}
@Override
protected void content(HTMLElement body) throws IOException {
}
}, 0x1002);
final SessionsPage page = new SessionsPage(noSessions, data, index,
null, rootFolder, context);
page.render();
final Document doc = support.parse(output
.getFile("jacoco-sessions.html"));
assertEquals("el_class", support.findStr(doc,
"/html/body/table[1]/tbody/tr[1]/td[1]/a/@class"));
assertEquals("Foo.html", support.findStr(doc,
"/html/body/table[1]/tbody/tr[1]/td[1]/a/@href"));
assertEquals("ClassA",
support.findStr(doc, "/html/body/table[1]/tbody/tr[1]/td[1]/a"));
assertEquals("0000000000001002", support.findStr(doc,
"/html/body/table[1]/tbody/tr[1]/td[2]/code"));
assertEquals("ClassB",
support.findStr(doc, "/html/body/table[1]/tbody/tr[2]/td[1]"));
assertEquals("ClassC",
support.findStr(doc, "/html/body/table[1]/tbody/tr[3]/td[1]"));
}
}