blob: 70bd25d42b421b32b6a8b8c17cf894f2aa5f5d8b [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2012, 2014 Ericsson
*
* 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:
* Bernd Hufmann - Initial API and implementation
* Alexandre Montplaisir - Port to JUnit4
**********************************************************************/
package org.eclipse.tracecompass.lttng2.control.ui.tests.model.component;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.remote.core.IRemoteConnection;
import org.eclipse.swt.graphics.Image;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
import org.eclipse.tracecompass.internal.lttng2.control.stubs.service.TestRemoteSystemProxy;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponentChangedListener;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlComponent;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlRoot;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.ILttngControlService;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.LTTngControlService;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.LTTngControlServiceMI;
import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.junit.Test;
/**
* The class <code>TraceControlComponentTest</code> contains tests for the class
* <code>{@link TraceControlComponent}</code>.
*/
public class TraceControlComponentTest {
private IRemoteConnection fHost = TmfRemoteConnectionFactory.getLocalConnection();
/**
* Run the TraceControlComponent(String) constructor test.
*/
@Test
public void testTraceControlComponent_1() {
String name = "node";
TraceControlComponent result = new TraceControlComponent(name);
assertNotNull(result);
assertEquals(name, result.getName());
assertEquals(null, result.getParent());
assertEquals(false, result.hasChildren());
assertEquals(null, result.getImage());
assertEquals(null, result.getControlService());
assertEquals(null, result.getToolTip());
}
/**
* Run the TraceControlComponent(String,ITraceControlComponent) constructor test.
*/
@Test
public void testTraceControlComponent_2() {
String name = "node";
ITraceControlComponent parent = new TraceControlRoot();
TraceControlComponent result = new TraceControlComponent(name, parent);
assertNotNull(result);
assertEquals(name, result.getName());
assertEquals(false, result.hasChildren());
assertEquals(null, result.getImage());
assertEquals(null, result.getControlService());
assertEquals(null, result.getToolTip());
}
/**
* Run the void addChild(ITraceControlComponent) method test.
*/
@Test
public void testAddAndGetChild1() {
TraceControlComponent fixture = new TraceControlComponent("node", new TraceControlRoot());
fixture.setToolTip("This is the test node");
fixture.addChild(new TraceControlRoot());
ITraceControlComponent component = new TraceControlRoot();
fixture.addChild(component);
ITraceControlComponent child = fixture.getChild(TraceControlRoot.TRACE_CONTROL_ROOT_NAME);
assertNotNull(child);
assertEquals(TraceControlRoot.TRACE_CONTROL_ROOT_NAME, child.getName());
}
/**
* Run the void addChild(ITraceControlComponent) method test.
*/
@Test
public void testAddAndGetChild2() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
ITraceControlComponent component = null;
fixture.addChild(component);
assertFalse(fixture.hasChildren());
}
/**
* Run the void addComponentListener(ITraceControlComponentChangedListener) method test.
*/
@Test
public void testAddComponentListener_1() {
TraceControlComponent fixture = new TraceControlComponent("", (ITraceControlComponent) null);
fixture.setToolTip("");
ListenerValidator validator = new ListenerValidator();
fixture.addComponentListener(validator);
TraceControlRoot root = new TraceControlRoot();
fixture.addChild(root);
assertTrue(validator.isAddedCalled());
fixture.removeChild(root);
assertTrue(validator.isRemovedCalled());
fixture.fireComponentChanged(fixture);
assertTrue(validator.isChangedCalled());
}
/**
* Run the boolean containsChild(String) method test.
*/
@Test
public void testContainsChild_1() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
String name = "node";
boolean result = fixture.containsChild(name);
assertEquals(false, result);
}
/**
* Run the boolean containsChild(String) method test.
*/
@Test
public void testContainsChild_2() {
TraceControlComponent fixture = new TraceControlComponent("name", new TraceControlRoot());
fixture.setToolTip("");
boolean result = fixture.containsChild(TraceControlRoot.TRACE_CONTROL_ROOT_NAME);
assertEquals(false, result);
}
/**
* Run the void fireCompenentAdded(ITraceControlComponent,ITraceControlComponent) method test.
* Run the void fireCompenentRemoved(ITraceControlComponent,ITraceControlComponent) method test.
* Run the void fireCompenentChanged(ITraceControlComponent) method test
*/
@Test
public void testFireCompenentUpdated() {
ITraceControlComponent parent = new TraceControlRoot();
TraceControlComponent fixture = new TraceControlComponent("node", parent);
fixture.setToolTip("");
ITraceControlComponent component = new TraceControlComponent("child");
fixture.addChild(component);
ListenerValidator validator = new ListenerValidator();
fixture.addComponentListener(validator);
fixture.fireComponentAdded(parent, component);
assertTrue(validator.isAddedCalled());
assertEquals(parent.getName(), validator.getSavedParent().getName());
assertEquals(component.getName(), validator.getSavedChild().getName());
validator.initialize();
fixture.fireComponentRemoved(parent, component);
assertTrue(validator.isRemovedCalled());
assertEquals(parent.getName(), validator.getSavedParent().getName());
assertEquals(component.getName(), validator.getSavedChild().getName());
validator.initialize();
fixture.fireComponentChanged(fixture);
assertTrue(validator.isChangedCalled());
assertEquals(fixture.getName(), validator.getSavedComponent().getName());
}
/**
* Run the Object getAdapter(Class) method test.
*/
@Test
public void testGetAdapter() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
Class<Object> adapter = Object.class;
Object result = fixture.getAdapter(adapter);
assertEquals(null, result);
}
/**
* Run the ITraceControlComponent[] getChildren() method test.
*/
@Test
public void testGetChildren_1() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
ITraceControlComponent[] result = fixture.getChildren();
assertNotNull(result);
assertEquals(1, result.length);
assertNotNull(result[0]);
assertEquals("trace_control_root", result[0].getName());
assertEquals(null, result[0].getParent());
assertEquals(false, result[0].hasChildren());
assertEquals(null, result[0].getImage());
assertEquals(null, result[0].getControlService());
assertEquals(null, result[0].getToolTip());
}
/**
* Run the ILttngControlService getControlService()/setControlService()
* method test.
*
* @throws ExecutionException
* Would fail the test
*/
@Test
public void testGetAndSetControlService_1() throws ExecutionException {
TraceControlComponent parent = new TraceControlComponent("parent") {
ILttngControlService fService = null;
@Override
public void setControlService(ILttngControlService service ) {
fService = service;
}
@Override
public ILttngControlService getControlService() {
return fService;
}
};
TraceControlComponent fixture = new TraceControlComponent("", parent);
parent.addChild(fixture);
fixture.setToolTip("");
TraceControlComponent child = new TraceControlComponent("child", fixture);
fixture.addChild(child);
ILttngControlService result = fixture.getControlService();
assertEquals(null, result);
TestRemoteSystemProxy proxy = new TestRemoteSystemProxy(fHost);
ILttngControlService service = new LTTngControlService(proxy.createCommandShell());
fixture.setControlService(service);
result = fixture.getControlService();
assertNotNull(service);
assertEquals(service, result);
service = new LTTngControlServiceMI(proxy.createCommandShell(), null);
fixture.setControlService(service);
result = fixture.getControlService();
assertNotNull(service);
assertEquals(service, result);
result = fixture.getChildren()[0].getControlService();
assertNotNull(service);
assertEquals(service, result);
}
/**
* Run the Image getImage() method test.
*/
@Test
public void testGetImage_1() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
Image result = fixture.getImage();
assertEquals(null, result);
fixture.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));
assertNotNull(fixture.getImage());
}
/**
* Run the boolean hasChildren() method test.
*/
@Test
public void testHasChildren_1() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
boolean result = fixture.hasChildren();
assertTrue(result);
}
/**
* Run the boolean hasChildren() method test.
*/
@Test
public void testHasChildren_2() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
boolean result = fixture.hasChildren();
assertFalse(result);
}
/**
* Run the void removeAllChildren() method test.
*/
@Test
public void testRemoveAllChildren_2() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
fixture.addChild(new TraceControlComponent("child"));
fixture.removeAllChildren();
assertFalse(fixture.hasChildren());
}
/**
* Run the void removeChild(ITraceControlComponent) method test.
*/
@Test
public void testRemoveChild_1() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
TraceControlComponent child = new TraceControlComponent("child", fixture);
fixture.addChild(child);
fixture.removeChild(child);
assertFalse(fixture.hasChildren());
}
/**
* Run the void removeChild(ITraceControlComponent) method test.
*/
@Test
public void testRemoveChild_2() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
ITraceControlComponent component = null;
fixture.removeChild(component);
assertTrue(fixture.hasChildren());
}
/**
* Run the void removeComponentListener(ITraceControlComponentChangedListener) method test.
*/
@Test
public void testRemoveComponentListener_1() {
TraceControlComponent fixture = new TraceControlComponent("", (ITraceControlComponent) null);
fixture.setToolTip("");
ListenerValidator validator = new ListenerValidator();
fixture.addComponentListener(validator);
// Remove listener and check that validator is not called anymore
validator.initialize();
fixture.removeComponentListener(validator);
TraceControlRoot root = new TraceControlRoot();
fixture.addChild(root);
assertFalse(validator.isAddedCalled());
fixture.removeChild(root);
assertFalse(validator.isRemovedCalled());
fixture.fireComponentChanged(fixture);
assertFalse(validator.isChangedCalled());
}
/**
* Run the void removeComponentListener(ITraceControlComponentChangedListener) method test.
*/
@Test
public void testRemoveComponentListener_2() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
ITraceControlComponentChangedListener listener = new ControlView();
fixture.removeComponentListener(listener);
}
/**
* Run the void setChildren(List<ITraceControlComponent>)/ITraceControlComponent[] getChildren() method test.
*/
@Test
public void testGetAndSetChildren() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
List<ITraceControlComponent> children = new LinkedList<>();
children.add(new TraceControlComponent("child1"));
children.add(new TraceControlComponent("child2"));
fixture.setChildren(children);
ITraceControlComponent[] result = fixture.getChildren();
assertEquals(2, result.length);
assertEquals("child1", result[0].getName());
assertEquals("child2", result[1].getName());
}
/**
* Run the void String getName()/setName(String) method tests.
*/
@Test
public void testGetAndSetName() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
String name = "node";
fixture.setName(name);
assertEquals(name,fixture.getName());
}
/**
* Run the void ITraceControlComponent getParent()/setParent(ITraceControlComponent) method tests.
*/
@Test
public void testGetAndSetParent() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("");
fixture.addChild(new TraceControlRoot());
ITraceControlComponent parent = new TraceControlRoot();
parent.addChild(fixture);
fixture.setParent(parent);
ITraceControlComponent retrievedParent = fixture.getParent();
assertNotNull(retrievedParent);
assertEquals(parent.getName(), retrievedParent.getName());
assertEquals(TraceControlRoot.TRACE_CONTROL_ROOT_NAME, retrievedParent.getName());
assertEquals(null, retrievedParent.getParent());
assertEquals(true, retrievedParent.hasChildren());
}
/**
* Run the void TargetNodeState getTargetNodeState()/etTargetNodeState(TargetNodeState) method tests.
*/
@Test
public void testGetAndSetTargetNodeState_1() {
TraceControlComponent parent = new TraceControlComponent("parent") {
private TargetNodeState fState;
@Override
public void setTargetNodeState(TargetNodeState state ) {
fState = state;
}
@Override
public TargetNodeState getTargetNodeState() {
return fState;
}
};
TraceControlComponent fixture = new TraceControlComponent("", parent);
parent.addChild(fixture);
fixture.setToolTip("");
TargetNodeState state = TargetNodeState.CONNECTED;
fixture.setTargetNodeState(state);
TargetNodeState result = fixture.getTargetNodeState();
assertNotNull(result);
assertEquals(state, result);
// Check also parent
assertEquals(state, fixture.getParent().getTargetNodeState());
assertEquals("CONNECTED", result.name());
assertEquals("CONNECTED", result.toString());
assertEquals(2, result.ordinal());
fixture.setTargetNodeState(TargetNodeState.DISCONNECTED);
result = fixture.getTargetNodeState();
assertNotNull(result);
assertEquals("DISCONNECTED", result.name());
assertEquals("DISCONNECTED", result.toString());
assertEquals(0, result.ordinal());
state = TargetNodeState.CONNECTING;
fixture.setTargetNodeState(state);
result = fixture.getTargetNodeState();
assertNotNull(result);
assertEquals("CONNECTING", result.name());
assertEquals("CONNECTING", result.toString());
assertEquals(3, result.ordinal());
fixture.setTargetNodeState(TargetNodeState.DISCONNECTING);
result = fixture.getTargetNodeState();
assertNotNull(result);
assertEquals("DISCONNECTING", result.name());
assertEquals("DISCONNECTING", result.toString());
assertEquals(1, result.ordinal());
}
/**
* Run the void setToolTip(String) method test.
*/
@Test
public void testGetSndSetToolTip() {
TraceControlComponent fixture = new TraceControlComponent("", new TraceControlRoot());
fixture.setToolTip("This is a tooltip");
fixture.addChild(new TraceControlRoot());
String result = fixture.getToolTip();
assertEquals("This is a tooltip", result);
}
}