/* * JaamSim Discrete Event Simulation * Copyright (C) 2014 Ausenco Engineering Canada Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jaamsim.events; import static org.junit.Assert.assertTrue; import org.junit.Test; public class TestEventTree { @Test public void testRBTree() { EventTree tree = new EventTree(); for (int i = 0; i < 10000; ++i) { tree.createOrFindNode(i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue((i+1) == nodeCount); } for (int i = 0; i < 10000; ++i) { assertTrue(tree.find(i, 0) != null); } assertTrue(tree.getNextNode().schedTick == 0); for (int i = 0; i < 10000; ++i) { tree.removeNode(i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue(nodeCount == 10000 - i - 1); } tree = new EventTree(); for (int i = 10000; i > 0; --i) { tree.createOrFindNode(i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue((10001-i) == nodeCount); } assertTrue(tree.getNextNode().schedTick == 1); for (int i = 1; i <= 10000; ++i) { assertTrue(tree.find(i, 0) != null); } for (int i = 10000; i > 0; --i) { tree.removeNode(i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue(nodeCount == i - 1); } for (int i = 10000; i > 0; --i) { tree.createOrFindNode(i, 0); tree.verify(); tree.createOrFindNode(-i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue(((10001-i)*2) == nodeCount); } assertTrue(tree.getNextNode().schedTick == -10000); for (int i = 0; i > 10000; --i) { tree.removeNode(i, 0); tree.verify(); tree.removeNode(-i, 0); tree.verify(); int nodeCount = tree.verifyNodeCount(); assertTrue((20000-2-2*i) == nodeCount); } } }