001: /**
002: * JDBM LICENSE v1.00
003: *
004: * Redistribution and use of this software and associated documentation
005: * ("Software"), with or without modification, are permitted provided
006: * that the following conditions are met:
007: *
008: * 1. Redistributions of source code must retain copyright
009: * statements and notices. Redistributions must also contain a
010: * copy of this document.
011: *
012: * 2. Redistributions in binary form must reproduce the
013: * above copyright notice, this list of conditions and the
014: * following disclaimer in the documentation and/or other
015: * materials provided with the distribution.
016: *
017: * 3. The name "JDBM" must not be used to endorse or promote
018: * products derived from this Software without prior written
019: * permission of Cees de Groot. For written permission,
020: * please contact cg@cdegroot.com.
021: *
022: * 4. Products derived from this Software may not be called "JDBM"
023: * nor may "JDBM" appear in their names without prior written
024: * permission of Cees de Groot.
025: *
026: * 5. Due credit should be given to the JDBM Project
027: * (http://jdbm.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY THE JDBM PROJECT AND CONTRIBUTORS
030: * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
031: * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
032: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
033: * CEES DE GROOT OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
034: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
035: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
036: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
037: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
038: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
039: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
040: * OF THE POSSIBILITY OF SUCH DAMAGE.
041: *
042: * Copyright 2000 (C) Cees de Groot. All Rights Reserved.
043: * Contributions are Copyright (C) 2000 by their associated contributors.
044: *
045: */package jdbm.htree;
046:
047: import jdbm.RecordManager;
048: import jdbm.RecordManagerFactory;
049: import jdbm.recman.TestRecordFile;
050: import jdbm.helper.FastIterator;
051: import junit.framework.*;
052: import java.io.IOException;
053: import java.util.Properties;
054:
055: /**
056: * This class contains all Unit tests for {@link HTree}.
057: *
058: * @author <a href="mailto:boisvert@intalio.com">Alex Boisvert</a>
059: * @version $Id: TestHTree.java,v 1.2 2003/09/21 15:49:02 boisvert Exp $
060: */
061: public class TestHTree extends TestCase {
062:
063: public TestHTree(String name) {
064: super (name);
065: }
066:
067: public void setUp() {
068: TestRecordFile.deleteTestFile();
069: }
070:
071: public void tearDown() {
072: TestRecordFile.deleteTestFile();
073: }
074:
075: /**
076: * Basic tests
077: */
078: public void testIterator() throws IOException {
079: Properties props = new Properties();
080: RecordManager recman = RecordManagerFactory
081: .createRecordManager(TestRecordFile.testFileName, props);
082:
083: HTree testTree = getHtree(recman, "htree");
084:
085: int total = 10;
086: for (int i = 0; i < total; i++) {
087: testTree.put(Long.valueOf("" + i), Long.valueOf("" + i));
088: }
089: recman.commit();
090:
091: FastIterator fi = testTree.values();
092: Object item;
093: int count = 0;
094: while ((item = fi.next()) != null) {
095: count++;
096: }
097: assertEquals(count, total);
098:
099: recman.close();
100: }
101:
102: private static HTree getHtree(RecordManager recman, String name)
103: throws IOException {
104: long recId = recman.getNamedObject("htree");
105: HTree testTree;
106: if (recId != 0) {
107: testTree = HTree.load(recman, recId);
108: } else {
109: testTree = HTree.createInstance(recman);
110: recman.setNamedObject("htree", testTree.getRecid());
111: }
112: return testTree;
113: }
114:
115: /**
116: * Runs all tests in this class
117: */
118: public static void main(String[] args) {
119: junit.textui.TestRunner.run(new TestSuite(TestHTree.class));
120: }
121:
122: }
|