/*******************************************************************************
* Copyright (c) 2015 Red Hat Inc. and others.
* 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
*******************************************************************************/
package org.eclipse.linuxtools.javadocs.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.help.ITocContribution;
import org.eclipse.help.ITopic;
import org.eclipse.help.IUAElement;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.linuxtools.internal.javadocs.ui.JavaDocPlugin;
import org.eclipse.linuxtools.internal.javadocs.ui.JavaDocToc;
import org.eclipse.linuxtools.internal.javadocs.ui.JavaDocTocProvider;
import org.eclipse.linuxtools.internal.javadocs.ui.preferences.PreferenceConstants;
import org.junit.Test;
public class CheckJavadoc {
/**
* Create a valid Toc (topic contribution) using JavaDocTocProvider
* @result A valid Toc will be created, with all necessary attributes
* created properly: locale, ID, and linkTo.
*/
@Test
public void testTocProvider() {
JavaDocTocProvider provider = new JavaDocTocProvider();
ITocContribution[] contributions = provider
.getTocContributions("en_US"); //$NON-NLS-1$
assertTrue(contributions.length == 1);
ITocContribution con = contributions[0];
assertEquals(con.getId(),
"org.eclipse.linuxtools.javadocs.toc"); //$NON-NLS-1$
assertTrue(con.isPrimary());
assertEquals(con.getCategoryId(), null);
assertEquals(con.getLocale(), "en_US"); //$NON-NLS-1$
String[] docs = con.getExtraDocuments();
assertEquals(docs.length, 0);
assertTrue(con.getLinkTo().equals("org.eclipse.linuxtools.javadocs/"));
assertEquals(con.getContributorId(),
"org.eclipse.linuxtools.javadocs"); //$NON-NLS-1$
}
/**
* Create a valid topic file given the sample Javadoc files provided
* in the /javadoc_root directory.
* @throws IOException
* @result A valid topic will be created with the proper href and label.
* Additionally this topic will be enabled correctly and will
* contain no child topics (subtopics).
*
*/
@Test
public void testHelpTopic() throws IOException {
// Get current directory and append our test doc directory to it.
// Set plugin preferences to read/detect Javadocs from this directory
// instead.
String testDocLoc = "/javadoc_root";
String dir = FileLocator.toFileURL(
this.getClass().getResource(testDocLoc)).getPath();
IPath wsRoot = new Path(dir);
IPreferenceStore ps = JavaDocPlugin.getDefault().getPreferenceStore();
ps.setValue(PreferenceConstants.JAVADOCS_DIRECTORY, wsRoot.toOSString());
JavaDocToc toc = new JavaDocToc();
// Get topics array
ITopic[] topics = toc.getTopics();
// Verify we have the test topic, in this case jnr-unixsocket
assertTrue(topics.length > 0);
assertTrue(topics.length == 1);
// Set topics and check labels
ITopic topicJnr = topics[0];
assertTrue(topicJnr.getLabel().startsWith("jnr-unixsocket")); //$NON-NLS-1$
// Get subtopics for each topic, should be 0 since
// Javadocs directories are only one level deep
ITopic[] subtopicsJnr = topicJnr.getSubtopics();
assertTrue(subtopicsJnr.length == 0);
IUAElement[] elementsJnr = topicJnr.getChildren();
assertTrue(elementsJnr.length == 0);
// Get hrefs and check for correctness according to Plugin-ID
// relative path
String hrefApache = topicJnr.getHref();
assertEquals(hrefApache,
"org.eclipse.linuxtools.javadocs/jnr-unixsocket/index.html"); //$NON-NLS-1$
// Check to make sure topics are enables (should always be true)
// regardless of input
assertTrue(topicJnr.isEnabled(null));
}
}