import java.io.IOException;
import java.io.PrintWriter;
import java.nio.channels.ClosedChannelException;
+import java.util.Collection;
import java.util.List;
-import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.CoreNode;
+import org.eclipse.tracecompass.internal.statesystem.core.Activator;
import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.HTConfig;
import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.HTNode;
-import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.HistoryTreeClassic;
import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.IHistoryTree;
+import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.ParentNode;
+import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.classic.CoreNode;
+import org.eclipse.tracecompass.internal.statesystem.core.backend.historytree.classic.HistoryTreeClassic;
import com.google.common.collect.Iterables;
preOrderPrint(writer, printIntervals, nextNode, curDepth + 1, ts);
}
} catch (ClosedChannelException e) {
+ Activator.getDefault().logError(e.getMessage());
}
break;
* The node to check
*/
private void assertNodeIntegrity(HTNode node) {
- if (node instanceof CoreNode) {
- assertChildrenIntegrity((CoreNode) node);
+ if (node instanceof ParentNode) {
+ assertChildrenIntegrity((ParentNode) node);
}
/* Check that all intervals are within the node's range */
}
- private void assertChildrenIntegrity(CoreNode node) {
+ private void assertChildrenIntegrity(ParentNode node) {
try {
/*
* Test that this node's start and end times match the start of the
assertTrue("Child at index " + i + " of parent " + node.getSequenceNumber() + " has correct start time",
childNode.getNodeEnd() <= childNode.getNodeEnd());
}
+ testIntersectingChildren(node, childNode);
}
} catch (ClosedChannelException e) {
}
}
+ private static void testIntersectingChildren(ParentNode parent, HTNode child) {
+ int childSequence = child.getSequenceNumber();
+ boolean shouldBeInCollection;
+ Collection<Integer> nextChildren;
+ for (long t = parent.getNodeStart(); t < parent.getNodeEnd(); t++) {
+ shouldBeInCollection = (t >= child.getNodeStart() && t <= child.getNodeEnd());
+ nextChildren = parent.selectNextChildren(t);
+ assertEquals(shouldBeInCollection, nextChildren.contains(childSequence));
+ }
+ }
+
}