/* jCAE stand for Java Computer Aided Engineering. Features are : Small CAD modeler, Finite element mesher, Plugin architecture. Copyright (C) 2006 by EADS CRC Copyright (C) 2007 by EADS France This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.jcae.mesh.amibe.util; import gnu.trove.impl.PrimeFinder; import java.util.Iterator; import static org.junit.Assert.*; import org.junit.Ignore; @Ignore("Utility class") public class QSortedTreeTest { QSortedTree<Integer> tree; private Integer [] unitTestInit(int n) { assert tree.isEmpty(); Integer [] ret = new Integer[n]; for (int i = 0; i < ret.length; i++) ret[i] = Integer.valueOf(i); for (int i = 0; i < ret.length; i++) tree.insert(ret[i], i); return ret; } final void unitTestIterator(int n) { Integer [] iii = unitTestInit(n); int i = 0; for (Iterator<QSortedTree.Node<Integer>> it = tree.iterator(); it.hasNext(); i++) { QSortedTree.Node<Integer> node = it.next(); assertTrue("Wrong iterator: "+i+" != "+node.getData(), node.getData().equals(Integer.valueOf(i))); } assertTrue("Wrong iterator", i == n); i = n-1; for (Iterator<QSortedTree.Node<Integer>> it = tree.backwardIterator(); it.hasNext(); i--) { QSortedTree.Node<Integer> node = it.next(); assertTrue("Wrong backward iterator: "+i+" != "+node.getData(), node.getData().equals(Integer.valueOf(i))); } assertTrue("Wrong backward iterator", i == -1); for (i = 0; i < iii.length; i++) tree.remove(iii[i]); assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest1(int n) { // Remove in ascending order Integer [] iii = unitTestInit(n); for (int i = 0; i < iii.length; i++) tree.remove(iii[i]); assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest2(int n) { // Remove in descending order Integer [] iii = unitTestInit(n); for (int i = iii.length - 1; i >= 0; i--) tree.remove(iii[i]); assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest3(int n) { Integer [] iii = unitTestInit(n); for (int i = 0; i < iii.length / 2; i++) { tree.remove(iii[i]); tree.remove(iii[i+iii.length / 2]); } assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest4(int n) { Integer [] iii = unitTestInit(n); for (int i = 0; i < iii.length / 2; i++) { tree.remove(iii[iii.length / 2+i]); tree.remove(iii[iii.length / 2-1-i]); } assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest5(int n, int s) { int prime = PrimeFinder.nextPrime(n); Integer [] iii = unitTestInit(prime); int index = 1; for (int i = 0; i < prime; i++) { index += s; while (index >= prime) index -= prime; tree.remove(iii[index]); } assertTrue("Tree not empty", tree.isEmpty()); } final void unitTest6(int n, int s) { int prime = PrimeFinder.nextPrime(n); Integer [] iii = new Integer[prime]; for (int i = 0; i < iii.length; i++) iii[i] = Integer.valueOf(i); int index = 1; for (int i = 0; i < prime; i++) { index += s; while (index >= prime) index -= prime; tree.insert(iii[index], index); } index = 3; for (int i = 0; i < prime; i++) { index += s; while (index >= prime) index -= prime; tree.remove(iii[index]); } assertTrue("Tree not empty", tree.isEmpty()); } }