blob: c44d936135a1fa51fa0a4d6cce59766416a8b307 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2018 Wind River Systems, Inc. and others.
* All rights reserved. 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:
* Michael Scharf (Wind River) - initial API and implementation
* Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl
* Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use
* Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point
* Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode
*******************************************************************************/
package org.eclipse.tm.internal.terminal.connector;
import java.io.OutputStream;
import junit.framework.TestCase;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.tm.internal.terminal.connector.TerminalConnector.Factory;
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl;
public class TerminalConnectorTest extends TestCase {
public class SettingsMock implements ISettingsStore {
public String get(String key) {
return null;
}
public String get(String key, String defaultValue) {
return null;
}
public void put(String key, String value) {
}
}
public static class TerminalControlMock implements ITerminalControl {
public void setEncoding(String encoding) {
}
public String getEncoding() {
return "ISO-8859-1"; //$NON-NLS-1$
}
public void displayTextInTerminal(String text) {
}
public OutputStream getRemoteToTerminalOutputStream() {
return null;
}
public Shell getShell() {
return null;
}
public TerminalState getState() {
return null;
}
public void setMsg(String msg) {
}
public void setState(TerminalState state) {
}
public void setTerminalTitle(String title) {
}
public void setupTerminal(Composite parent) {
}
public boolean isConnectOnEnterIfClosed() {
return false;
}
public void setConnectOnEnterIfClosed(boolean on) {
}
public void setVT100LineWrapping(boolean enable) {
}
public boolean isVT100LineWrapping() {
return false;
}
}
static class ConnectorMock extends TerminalConnectorImpl {
public boolean fEcho;
public int fWidth;
public int fHeight;
public ITerminalControl fTerminalControl;
public ISettingsStore fSaveStore;
public ISettingsStore fLoadStore;
public boolean fDisconnect;
public boolean isLocalEcho() {
return fEcho;
}
public void setTerminalSize(int newWidth, int newHeight) {
fWidth=newWidth;
fHeight=newHeight;
}
public void connect(ITerminalControl control) {
super.connect(control);
fTerminalControl = control;
}
public void doDisconnect() {
fDisconnect=true;
}
public OutputStream getTerminalToRemoteStream() {
return null;
}
public String getSettingsSummary() {
return "Summary";
}
public void load(ISettingsStore store) {
fLoadStore=store;
}
public void save(ISettingsStore store) {
fSaveStore=store;
}
}
static class SimpleFactory implements Factory {
final TerminalConnectorImpl fConnector;
public SimpleFactory(TerminalConnectorImpl connector) {
fConnector = connector;
}
public TerminalConnectorImpl makeConnector() throws Exception {
// TODO Auto-generated method stub
return fConnector;
}
}
public void testGetInitializationErrorMessage() {
TerminalConnector c=new TerminalConnector(new SimpleFactory(new ConnectorMock()),"xID","xName", false);
c.connect(new TerminalControlMock());
assertNull(c.getInitializationErrorMessage());
c=new TerminalConnector(new SimpleFactory(new ConnectorMock(){
public void initialize() throws Exception {
throw new Exception("FAILED");
}}),"xID","xName", false);
c.connect(new TerminalControlMock());
assertEquals("FAILED",c.getInitializationErrorMessage());
}
public void testGetIdAndName() {
TerminalConnector c=new TerminalConnector(new SimpleFactory(new ConnectorMock()),"xID","xName", false);
assertEquals("xID", c.getId());
assertEquals("xName", c.getName());
}
public void testConnect() {
TerminalConnector c=new TerminalConnector(new SimpleFactory(new ConnectorMock()),"xID","xName", false);
assertFalse(c.isInitialized());
c.connect(new TerminalControlMock());
assertTrue(c.isInitialized());
}
public void testDisconnect() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
TerminalControlMock control=new TerminalControlMock();
c.connect(control);
c.disconnect();
assertTrue(mock.fDisconnect);
}
public void testGetTerminalToRemoteStream() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
TerminalControlMock control=new TerminalControlMock();
c.connect(control);
assertSame(mock.fTerminalControl,control);
}
public void testGetSettingsSummary() {
TerminalConnector c=new TerminalConnector(new SimpleFactory(new ConnectorMock()),"xID","xName", false);
assertEquals("Not Initialized", c.getSettingsSummary());
c.connect(new TerminalControlMock());
assertEquals("Summary", c.getSettingsSummary());
}
public void testIsLocalEcho() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
assertFalse(c.isLocalEcho());
mock.fEcho=true;
assertTrue(c.isLocalEcho());
}
public void testLoad() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
ISettingsStore s=new SettingsMock();
c.load(s);
// the load is called after the connect...
assertNull(mock.fLoadStore);
c.connect(new TerminalControlMock());
assertSame(s,mock.fLoadStore);
}
public void testSave() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
ISettingsStore s=new SettingsMock();
c.save(s);
assertNull(mock.fSaveStore);
c.connect(new TerminalControlMock());
c.save(s);
assertSame(s,mock.fSaveStore);
}
public void testSetDefaultSettings() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
c.setDefaultSettings();
}
public void testSetTerminalSize() {
ConnectorMock mock=new ConnectorMock();
TerminalConnector c=new TerminalConnector(new SimpleFactory(mock),"xID","xName", false);
c.setTerminalSize(100, 200);
}
}