1/*******************************************************************************
2 * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *    Marc R. Hoffmann - initial API and implementation
10 *
11 *******************************************************************************/
12package org.jacoco.report.internal.html.page;
13
14import java.io.IOException;
15import java.util.Locale;
16
17import org.jacoco.report.ILanguageNames;
18import org.jacoco.report.JavaNames;
19import org.jacoco.report.MemoryMultiReportOutput;
20import org.jacoco.report.internal.ReportOutputFolder;
21import org.jacoco.report.internal.html.HTMLSupport;
22import org.jacoco.report.internal.html.IHTMLReportContext;
23import org.jacoco.report.internal.html.ILinkable;
24import org.jacoco.report.internal.html.LinkableStub;
25import org.jacoco.report.internal.html.index.IIndexUpdate;
26import org.jacoco.report.internal.html.resources.Resources;
27import org.jacoco.report.internal.html.resources.Styles;
28import org.jacoco.report.internal.html.table.LabelColumn;
29import org.jacoco.report.internal.html.table.Table;
30import org.junit.After;
31
32/**
33 * Unit tests for {@link ReportPage}.
34 */
35public abstract class PageTestBase {
36
37	protected MemoryMultiReportOutput output;
38
39	protected ReportOutputFolder rootFolder;
40
41	protected IHTMLReportContext context;
42
43	protected HTMLSupport support;
44
45	protected void setup() throws Exception {
46		output = new MemoryMultiReportOutput();
47		rootFolder = new ReportOutputFolder(output);
48		final Resources resources = new Resources(rootFolder);
49		final Table table = new Table();
50		table.add("Element", null, new LabelColumn(), true);
51		context = new IHTMLReportContext() {
52
53			public ILanguageNames getLanguageNames() {
54				return new JavaNames();
55			}
56
57			public Resources getResources() {
58				return resources;
59			}
60
61			public Table getTable() {
62				return table;
63			}
64
65			public String getFooterText() {
66				return "CustomFooter";
67			}
68
69			public ILinkable getSessionsPage() {
70				return new LinkableStub("sessions.html", "Sessions",
71						Styles.EL_SESSION);
72			}
73
74			public String getOutputEncoding() {
75				return "UTF-8";
76			}
77
78			public IIndexUpdate getIndexUpdate() {
79				return new IIndexUpdate() {
80					public void addClass(ILinkable link, long classid) {
81					}
82				};
83			}
84
85			public Locale getLocale() {
86				return Locale.ENGLISH;
87			}
88
89		};
90		support = new HTMLSupport();
91	}
92
93	@After
94	public void teardown() throws IOException {
95		output.close();
96		output.assertAllClosed();
97	}
98
99}
100