blob: f11be0413269feb394533d83479e88c96e150a8b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2016 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ua.tests.help.scope;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.help.IIndexEntry2;
import org.eclipse.help.IIndexSee;
import org.eclipse.help.base.AbstractHelpScope;
import org.eclipse.help.internal.base.scope.ScopeUtils;
import org.eclipse.help.internal.index.Index;
import org.eclipse.ua.tests.help.other.UserIndex;
import org.eclipse.ua.tests.help.other.UserIndexEntry;
import org.eclipse.ua.tests.help.other.UserIndexSee;
import org.eclipse.ua.tests.help.other.UserToc;
import org.eclipse.ua.tests.help.other.UserTopic;
import org.junit.Test;
public class ScopeHierarchy {
@Test
public void testHierarchicalToc() {
UserToc toc = new UserToc("ab", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
toc.addTopic(child);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(toc, scope));
}
@Test
public void testHierarchicalTocDepth3() {
UserToc toc = new UserToc("c", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("b", "http://www.eclipse.org", true);
toc.addTopic(child);
UserTopic grandChild = new UserTopic("c", "http://www.eclipse.org", true);
child.addTopic(grandChild);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(toc, scope));
}
@Test
public void testNonHierarchicalTocDepth3() {
UserToc toc = new UserToc("a", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("b", "http://www.eclipse.org", true);
toc.addTopic(child);
UserTopic grandChild = new UserTopic("c", "http://www.eclipse.org", true);
child.addTopic(grandChild);
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(toc, scope));
}
@Test
public void testNonHierarchicalToc() {
UserToc toc = new UserToc("ab", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
toc.addTopic(child);
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(toc, scope));
}
@Test
public void testHierarchicalTopic() {
UserTopic topic = new UserTopic("ab", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
topic.addTopic(child);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(topic, scope));
}
@Test
public void testNonHierarchicalTopic() {
UserTopic topic = new UserTopic("ab", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
topic.addTopic(child);
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(topic, scope));
}
@Test
public void testNonHierarchicalTopicThreeDeep() {
UserTopic topic = new UserTopic("ab", "http://www.eclipse.org", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
UserTopic grandChild = new UserTopic("d", "http://www.eclipse.org", true);
topic.addTopic(child);
child.addTopic(grandChild);
AbstractHelpScope scope = new MockScope('d', false);
assertTrue(ScopeUtils.showInTree(topic, scope));
}
@Test
public void testHierarchicalEntry() {
UserIndexEntry entry = new UserIndexEntry("ab", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
entry.addTopic(child);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testNonHierarchicalEntry() {
UserIndexEntry entry = new UserIndexEntry("ab", true);
UserTopic child = new UserTopic("c", "http://www.eclipse.org", true);
entry.addTopic(child);
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testNonHierarchicalEntryThreeDeep() {
UserIndexEntry entry = new UserIndexEntry("a", true);
UserIndexEntry childEntry = new UserIndexEntry("b", true);
entry.addEntry(childEntry);
UserTopic grandChild = new UserTopic("c", "http://www.eclipse.org", true);
childEntry.addTopic(grandChild);
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testHierarchicalEntryThreeDeep() {
UserIndexEntry entry = new UserIndexEntry("a", true);
UserIndexEntry childEntry = new UserIndexEntry("c", true);
entry.addEntry(childEntry);
UserTopic grandChild = new UserTopic("c", "http://www.eclipse.org", true);
childEntry.addTopic(grandChild);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testHierarchicalEntryNoInScopeSubtopic() {
UserIndexEntry entry = new UserIndexEntry("c", true);
UserTopic child = new UserTopic("a", "http://www.eclipse.org", true);
entry.addTopic(child);
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testNonHierarchicalEntryNoInScopeSubtopic() {
UserIndexEntry entry = new UserIndexEntry("c", true);
UserTopic child = new UserTopic("a", "http://www.eclipse.org", true);
entry.addTopic(child);
AbstractHelpScope scope = new MockScope('c', false);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetInScopeNonHierarchical() {
IIndexSee see = createSee("compile", "c++");
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetInScopeNonHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("compile", "c++");
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetOutOfScopeNonHierarchical() {
IIndexSee see = createSee("build", "c++");
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetOutOfScopeNonHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("build", "c++");
AbstractHelpScope scope = new MockScope('c', false);
assertTrue(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetWithChildOutOfScopeNonHierarchical() {
IIndexSee see = createSee("compilation", "build");
AbstractHelpScope scope = new MockScope('c', false);
assertFalse(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetWithChildOutOfScopeNonHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("compilation", "build");
AbstractHelpScope scope = new MockScope('c', false);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetInScopeHierarchical() {
IIndexSee see = createSee("compile", "c++");
AbstractHelpScope scope = new MockScope('c', true);
assertTrue(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetInScopeHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("compile", "c++");
AbstractHelpScope scope = new MockScope('c', true);
assertTrue(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetOutOfScopeHierarchical() {
IIndexSee see = createSee("build", "c++");
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetOutOfScopeHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("build", "c++");
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
@Test
public void testSeeTargetWithChildOutOfScopeHierarchical() {
IIndexSee see = createSee("compilation", "build");
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(see, scope));
}
@Test
public void testSeeParentTargetWithChildOutOfScopeHierarchical() {
IIndexEntry2 entry = createSeeParentEntry("compilation", "build");
AbstractHelpScope scope = new MockScope('c', true);
assertFalse(ScopeUtils.showInTree(entry, scope));
}
private IIndexSee createSee(String targetEntryName, String targetTopicName) {
IIndexEntry2 entry = createSeeParentEntry(targetEntryName, targetTopicName);
return entry.getSees()[0];
}
private IIndexEntry2 createSeeParentEntry(String targetEntryName, String targetTopicName) {
IIndexEntry2 entry;
UserIndex userIndex = new UserIndex(true);
UserIndexEntry targetEntry = new UserIndexEntry(targetEntryName, true);
UserIndexEntry seeParentEntry = new UserIndexEntry("compilation", true);
userIndex.addEntry(targetEntry);
userIndex.addEntry(seeParentEntry);
UserTopic child = new UserTopic(targetTopicName, "http://www.eclipse.org", true);
targetEntry.addTopic(child);
UserIndexSee userSee = new UserIndexSee(targetEntryName, false);
seeParentEntry.addSee(userSee);
Index index = new Index(userIndex);
entry = (IIndexEntry2)index.getEntries()[1];
return entry;
}
}