1 /******************************************************************************* 2 * Copyright (c) 2006, 2016 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.ua.tests.help.toc; 15 16 import static org.junit.Assert.assertEquals; 17 import static org.junit.Assert.assertNotNull; 18 import static org.junit.Assert.assertNull; 19 20 import java.util.ArrayList; 21 import java.util.Arrays; 22 import java.util.List; 23 24 import org.eclipse.help.IToc; 25 import org.eclipse.help.internal.dynamic.DocumentWriter; 26 import org.eclipse.help.internal.toc.Toc; 27 import org.eclipse.help.internal.toc.TocAssembler; 28 import org.eclipse.help.internal.toc.TocContribution; 29 import org.eclipse.help.internal.toc.TocFile; 30 import org.eclipse.help.internal.toc.TocFileParser; 31 import org.eclipse.ua.tests.plugin.UserAssistanceTestPlugin; 32 import org.eclipse.ua.tests.util.XMLUtil; 33 import org.junit.Test; 34 35 public class TocAssemblerTest { 36 @Test testAssemble()37 public void testAssemble() throws Exception { 38 TocFileParser parser = new TocFileParser(); 39 TocContribution b = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/b.xml", true, "en", null, null)); 40 TocContribution c = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/c.xml", true, "en", null, null)); 41 TocContribution result_b_c = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/result_b_c.xml", true, "en", null, null)); 42 43 TocAssembler assembler = new TocAssembler(); 44 List<TocContribution> contributions = new ArrayList<>(Arrays.asList(b, c)); 45 contributions = assembler.assemble(contributions); 46 assertEquals(1, contributions.size()); 47 String expected = serialize(result_b_c); 48 String actual = serialize(contributions.get(0)); 49 XMLUtil.assertXMLEquals("Assembled TOC did not match expected result", expected, actual); 50 51 TocContribution a = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/a.xml", true, "en", null, null)); 52 b = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/b.xml", true, "en", null, null)); 53 c = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/c.xml", true, "en", null, null)); 54 TocContribution d = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/d.xml", false, "en", null, null)); 55 TocContribution result_a_b_c_d = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/result_a_b_c_d.xml", true, "en", null, null)); 56 57 contributions = new ArrayList<>(Arrays.asList(a, b, c, d)); 58 contributions = assembler.assemble(contributions); 59 assertEquals(1, contributions.size()); 60 61 expected = serialize(result_a_b_c_d); 62 actual = serialize(contributions.get(0)); 63 XMLUtil.assertXMLEquals("Assembled TOC did not match expected result", expected, actual); 64 } 65 66 @Test testInvalidLinkTo()67 public void testInvalidLinkTo() throws Exception { 68 TocFileParser parser = new TocFileParser(); 69 TocContribution linkTo1 = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/linkTo1.xml", true, "en", null, null)); 70 TocContribution linkTo2 = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/linkTo2.xml", true, "en", null, null)); 71 TocContribution linkTo3 = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/linkTo3.xml", true, "en", null, null)); 72 73 TocAssembler assembler = new TocAssembler(); 74 List<TocContribution> contributions = new ArrayList<>(Arrays.asList(linkTo1, linkTo2, linkTo3)); 75 contributions = assembler.assemble(contributions); 76 assertEquals(3, contributions.size()); 77 } 78 79 @Test testHrefMap()80 public void testHrefMap() throws Exception { 81 TocFileParser parser = new TocFileParser(); 82 TocContribution b = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/b.xml", true, "en", null, null)); 83 TocContribution c = parser.parse(new TocFile(UserAssistanceTestPlugin.getPluginId(), "data/help/toc/assembler/c.xml", true, "en", null, null)); 84 TocAssembler assembler = new TocAssembler(); 85 List<TocContribution> contributions = new ArrayList<>(Arrays.asList(b, c)); 86 contributions = assembler.assemble(contributions); 87 IToc toc =contributions.get(0).getToc(); 88 assertNotNull(toc.getTopic("/org.eclipse.ua.tests/B_topic3.html")); 89 assertNotNull(toc.getTopic("/org.eclipse.ua.tests/C_topic.html")); 90 assertNull(toc.getTopic("/org.eclipse.ua.tests/D_topic.html")); 91 } 92 serialize(TocContribution contribution)93 private String serialize(TocContribution contribution) throws Exception { 94 DocumentWriter writer = new DocumentWriter(); 95 return new String(writer.writeString((Toc)contribution.getToc(), true)); 96 } 97 } 98