blob: 81954be6f98b04e3de088c561cf2f26f052a8d1c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2015 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.remote;
import static org.junit.Assert.assertEquals;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.help.internal.base.HelpBasePlugin;
import org.eclipse.help.internal.base.IHelpBaseConstants;
import org.eclipse.help.internal.base.remote.PreferenceFileHandler;
import org.eclipse.help.internal.base.remote.RemoteIC;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class RemotePreferenceTest {
public static void setPreference(String name, String value) {
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(HelpBasePlugin.PLUGIN_ID);
prefs.put(name, value);
}
@Before
public void setUp() throws Exception {
RemotePreferenceStore.savePreferences();
}
@After
public void tearDown() throws Exception {
RemotePreferenceStore.restorePreferences();
}
private void setToDefault(String preference) {
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(HelpBasePlugin.PLUGIN_ID);
prefs.remove(preference);
}
@Test
public void testDefaults() {
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_NAME);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_HOST);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_PATH);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_PORT);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_ICEnabled);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_ON);
setToDefault(IHelpBaseConstants.P_KEY_REMOTE_HELP_DEFAULT_PORT);
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(0, handler.getTotalRemoteInfocenters());
assertEquals(0, handler.getEnabledEntries().length);
}
/*
* Test the default settings from Eclipse 3.3
*/
@Test
public void test33Defaults() {
setPreference("remoteHelpOn", "false");
setPreference("remoteHelpHost", "");
setPreference("remoteHelpPath", "/help");
setPreference("remoteHelpUseDefaultPort", "true");
setPreference("remoteHelpPort", "80");
setPreference("remoteHelpName", "");
setPreference("remoteHelpICEnabled", "");
setPreference("remoteHelpICContributed", "");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(0, handler.getTotalRemoteInfocenters());
assertEquals(0, handler.getEnabledEntries().length);
}
/*
* Test settings which worked in Eclipse 3.3 to read a remote infocenter
*/
@Test
public void test33Remote() {
setPreference("remoteHelpOn", "true");
setPreference("remoteHelpHost", "localhost");
setPreference("remoteHelpPath", "/help");
setPreference("remoteHelpUseDefaultPort", "false");
setPreference("remoteHelpPort", "8081");
setPreference("remoteHelpName", "");
setPreference("remoteHelpICEnabled", "");
setPreference("remoteHelpICContributed", "");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(1, handler.getTotalRemoteInfocenters());
assertEquals(1, handler.getEnabledEntries().length);
}
@Test
public void testZeroRemoteInfocenters() {
setPreference("remoteHelpOn", "true");
setPreference("remoteHelpHost", "");
setPreference("remoteHelpPath", "");
setPreference("remoteHelpUseDefaultPort", "");
setPreference("remoteHelpPort", "");
setPreference("remoteHelpName", "");
setPreference("remoteHelpICEnabled", "");
setPreference("remoteHelpICContributed", "");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(0, handler.getTotalRemoteInfocenters());
assertEquals(0, handler.getHostEntries().length);
assertEquals(0, handler.getPortEntries().length);
assertEquals(0, handler.getEnabledEntries().length);
assertEquals(0, handler.getPathEntries().length);
}
@Test
public void testOneRemoteInfocenter() {
setPreference("remoteHelpOn", "true");
setPreference("remoteHelpHost", "localhost");
setPreference("remoteHelpPath", "/help");
setPreference("remoteHelpUseDefaultPort", "");
setPreference("remoteHelpPort", "8081");
setPreference("remoteHelpName", "local");
setPreference("remoteHelpICEnabled", "true");
setPreference("remoteHelpICContributed", "false");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(1, handler.getTotalRemoteInfocenters());
assertEquals(1, handler.getHostEntries().length);
assertEquals("localhost", handler.getHostEntries()[0]);
assertEquals(1, handler.getPortEntries().length);
assertEquals("8081", handler.getPortEntries()[0]);
assertEquals(1, handler.getEnabledEntries().length);
assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals(1, handler.getPathEntries().length);
assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
}
@Test
public void testTwoRemoteInfocenters() {
setPreference("remoteHelpHost", "localhost,www.eclipse.org");
setPreference("remoteHelpPath", "/help,/eclipse/help");
setPreference("remoteHelpUseDefaultPort", "");
setPreference("remoteHelpPort", "8081,8082");
setPreference("remoteHelpName", "local,remote");
setPreference("remoteHelpICEnabled", "true,false");
setPreference("remoteHelpICContributed", "false,false");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(2, handler.getTotalRemoteInfocenters());
assertEquals(2, handler.getHostEntries().length);
assertEquals("localhost", handler.getHostEntries()[0]);
assertEquals("www.eclipse.org", handler.getHostEntries()[1]);
assertEquals(2, handler.getPortEntries().length);
assertEquals("8081", handler.getPortEntries()[0]);
assertEquals("8082", handler.getPortEntries()[1]);
assertEquals(2, handler.getEnabledEntries().length);
assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals("false", handler.getEnabledEntries()[1].toLowerCase());
assertEquals(2, handler.getPathEntries().length);
assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
assertEquals("/eclipse/help", handler.getPathEntries()[1].toLowerCase());
}
@Test
public void testOnePathTwoOfEverythingElse() {
setPreference("remoteHelpOn", "true");
setPreference("remoteHelpHost", "localhost");
setPreference("remoteHelpPath", "/help,/nhelp");
setPreference("remoteHelpUseDefaultPort", "true,false");
setPreference("remoteHelpPort", "8081,8082");
setPreference("remoteHelpName", "local,remote");
setPreference("remoteHelpICEnabled", "true,false");
setPreference("remoteHelpICContributed", "false,true");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(1, handler.getTotalRemoteInfocenters());
assertEquals(1, handler.getHostEntries().length);
assertEquals("localhost", handler.getHostEntries()[0]);
assertEquals(1, handler.getPortEntries().length);
assertEquals("8081", handler.getPortEntries()[0]);
assertEquals(1, handler.getEnabledEntries().length);
assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals(1, handler.getPathEntries().length);
assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
}
@Test
public void testPathOnly() {
setPreference("remoteHelpOn", "true");
setPreference("remoteHelpHost", "localhost");
setPreference("remoteHelpPath", "");
setPreference("remoteHelpUseDefaultPort", "");
setPreference("remoteHelpPort", "");
setPreference("remoteHelpName", "");
setPreference("remoteHelpICEnabled", "");
setPreference("remoteHelpICContributed", "");
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(1, handler.getTotalRemoteInfocenters());
assertEquals(1, handler.getHostEntries().length);
assertEquals("localhost", handler.getHostEntries()[0]);
assertEquals(1, handler.getPortEntries().length);
//assertEquals("80", handler.getPortEntries()[0]);
assertEquals(1, handler.getEnabledEntries().length);
//assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals(1, handler.getPathEntries().length);
//assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
}
@Test
public void testWriteNoRemote() {
PreferenceFileHandler.commitRemoteICs(new RemoteIC[0]);
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(0, handler.getTotalRemoteInfocenters());
assertEquals(0, handler.getHostEntries().length);
assertEquals(0, handler.getPortEntries().length);
assertEquals(0, handler.getEnabledEntries().length);
assertEquals(0, handler.getPathEntries().length);
}
@Test
public void testWriteOneRemote() {
RemoteIC[] ic = {new RemoteIC(true, "name", "host", "/help", "http","8080")};
PreferenceFileHandler.commitRemoteICs(ic);
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(1, handler.getTotalRemoteInfocenters());
assertEquals(1, handler.getHostEntries().length);
assertEquals("host", handler.getHostEntries()[0]);
assertEquals(1, handler.getPortEntries().length);
assertEquals("8080", handler.getPortEntries()[0]);
assertEquals(1, handler.getEnabledEntries().length);
assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals(1, handler.getPathEntries().length);
assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
}
@Test
public void testWriteTwoRemote() {
RemoteIC[] ic = {new RemoteIC(true, "name", "host", "/help", "http", "8080"),
new RemoteIC(false, "remote", "remotehost", "/help2", "http", "8081")};
PreferenceFileHandler.commitRemoteICs(ic);
PreferenceFileHandler handler = new PreferenceFileHandler();
assertEquals(2, handler.getTotalRemoteInfocenters());
assertEquals(2, handler.getHostEntries().length);
assertEquals("host", handler.getHostEntries()[0]);
assertEquals("remotehost", handler.getHostEntries()[1]);
assertEquals(2, handler.getPortEntries().length);
assertEquals("8080", handler.getPortEntries()[0]);
assertEquals("8081", handler.getPortEntries()[1]);
assertEquals(2, handler.getEnabledEntries().length);
assertEquals("true", handler.getEnabledEntries()[0].toLowerCase());
assertEquals("false", handler.getEnabledEntries()[1].toLowerCase());
assertEquals(2, handler.getPathEntries().length);
assertEquals("/help", handler.getPathEntries()[0].toLowerCase());
assertEquals("/help2", handler.getPathEntries()[1].toLowerCase());
}
}