/******************************************************************************* * Copyright (c) 2015 Ericsson * * 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 * * Contributors: * Patrick Tasse - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.tests.filter; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; import org.eclipse.tracecompass.tmf.core.event.ITmfEventType; import org.eclipse.tracecompass.tmf.core.event.TmfEventField; import org.eclipse.tracecompass.tmf.core.event.TmfEventType; import org.eclipse.tracecompass.tmf.core.filter.model.ITmfFilterTreeNode; import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterNode; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub; import org.junit.AfterClass; import org.junit.Test; /** * Test suite for the {@link TmfFilterTreeNodeTestBase} class. * * @author Patrick Tasse */ @SuppressWarnings("javadoc") public abstract class TmfFilterTreeNodeTestBase { // ------------------------------------------------------------------------ // Variables // ------------------------------------------------------------------------ protected static final @NonNull ITmfTrace TRACE = new TmfTraceStub(); protected static final @NonNull String FIELD = "field"; protected static final ITmfFilterTreeNode TRUE_NODE = new TmfFilterNode(null) { @Override public boolean matches(ITmfEvent event) { return true; } }; protected static final ITmfFilterTreeNode FALSE_NODE = new TmfFilterNode(null) { @Override public boolean matches(ITmfEvent event) { return false; } }; protected static final ITmfEventType EVENT_TYPE = new TmfEventType("Type", TmfEventField.makeRoot(new String[] { FIELD })); protected ITmfFilterTreeNode fFilterNode; @AfterClass public static void disposeTrace() { TRACE.dispose(); } // ------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------ @Test public void testDefaults() { assertNull("getParent()", fFilterNode.getParent()); assertEquals("hasChildren()", false, fFilterNode.hasChildren()); assertEquals("getChildrenCount()", 0, fFilterNode.getChildrenCount()); assertEquals("getChildren()", 0, fFilterNode.getChildren().length); } @Test public void testClone() { ITmfFilterTreeNode clone = fFilterNode.clone(); assertFalse("clone().equals()", fFilterNode.equals(clone)); assertFalse("clone() ==", fFilterNode == clone); assertEquals("clone().toString.equals()", fFilterNode.toString(), clone.toString()); assertNull("clone().getParent()", clone.getParent()); } @Test public void testAddChild() { ITmfFilterTreeNode child = fFilterNode.clone(); assertEquals("addChild()", 0, fFilterNode.addChild(child)); assertEquals("hasChildren()", true, fFilterNode.hasChildren()); assertEquals("removeChild()", child, fFilterNode.removeChild(child)); } @Test(expected = IndexOutOfBoundsException.class) public void testGetChild() { fFilterNode.getChild(0); } @Test public void testRemove() { ITmfFilterTreeNode child = fFilterNode.clone(); assertEquals("addChild()", 0, fFilterNode.addChild(child)); assertEquals("remove()", child, child.remove()); assertEquals("hasChildren()", false, fFilterNode.hasChildren()); } @Test public void testRemoveChild() { ITmfFilterTreeNode child = fFilterNode.clone(); assertEquals("addChild()", 0, fFilterNode.addChild(child)); assertEquals("removeChild()", child, fFilterNode.removeChild(child)); assertEquals("hasChildren()", false, fFilterNode.hasChildren()); } @Test public void testReplaceChild() { ITmfFilterTreeNode child1 = fFilterNode.clone(); ITmfFilterTreeNode child2 = fFilterNode.clone(); child1.addChild(child1.clone()); assertEquals("addChild()", 0, fFilterNode.addChild(child1)); assertEquals("getChild()", child1, fFilterNode.getChild(0)); assertEquals("replaceChild()", child1, fFilterNode.replaceChild(0, child2)); assertEquals("getChildrenCount()", 1, fFilterNode.getChildrenCount()); assertEquals("getChild()", child2, fFilterNode.getChild(0)); assertEquals("removeChild()", child2, fFilterNode.removeChild(child2)); } }