You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Otis Gospodnetic <ot...@yahoo.com> on 2002/11/02 01:01:11 UTC
Re: Bug 8525
Woho, nice, nice, thank you, thank you. I'll try it and stick it in
the repository when I get a chance.
Who says there is no development happening? ;)
Otis
--- Peter Mularien <pm...@deploy.com> wrote:
> Was trolling through the bugs in Bugzilla, found the bug 8525:
> http://issues.apache.org/bugzilla/show_bug.cgi?id=8525
>
> I tried to reproduce it, and was unable to. I ended up with a full
> JUnit
> test of BitVector. :)
>
> Not sure where such things go, but I've attached it, maybe someone
> could
> put it into the repository?
>
> I'll continue trolling through the bugs, maybe someone with Bugzilla
> access could ask the author for more info, or we can close it as not
> reproducible?
>
> Thanks
> Peter
>
> > package org.apache.lucene.util;
>
> /*
> ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2001 The Apache Software Foundation. All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above
> copyright
> * notice, this list of conditions and the following disclaimer in
> * the documentation and/or other materials provided with the
> * distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> * if any, must include the following acknowledgment:
> * "This product includes software developed by the
> * Apache Software Foundation (http://www.apache.org/)."
> * Alternately, this acknowledgment may appear in the software
> itself,
> * if and wherever such third-party acknowledgments normally
> appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> * "Apache Lucene" must not be used to endorse or promote products
> * derived from this software without prior written permission.
> For
> * written permission, please contact apache@apache.org.
> *
> * 5. Products derived from this software may not be called "Apache",
> * "Apache Lucene", nor may "Apache" appear in their name, without
> * prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
> AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> *
> ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation. For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
>
> import junit.framework.TestCase;
> import org.apache.lucene.store.Directory;
> import org.apache.lucene.store.RAMDirectory;
>
> public class TestBitVector extends TestCase {
> public TestBitVector(String s) {
> super(s);
> }
>
> /**
> * Test the default constructor on BitVectors of various sizes.
> * @throws Exception
> */
> public void testConstructSize() throws Exception {
> doTestConstructOfSize(8);
> doTestConstructOfSize(20);
> doTestConstructOfSize(100);
> doTestConstructOfSize(1000);
> }
>
> private void doTestConstructOfSize(int n) {
> BitVector bv = new BitVector(n);
> assertEquals(n,bv.size());
> }
>
> /**
> * Test the get() and set() methods on BitVectors of various
> sizes.
> * @throws Exception
> */
> public void testGetSet() throws Exception {
> doTestGetSetVectorOfSize(8);
> doTestGetSetVectorOfSize(20);
> doTestGetSetVectorOfSize(100);
> doTestGetSetVectorOfSize(1000);
> }
>
> private void doTestGetSetVectorOfSize(int n) {
> BitVector bv = new BitVector(n);
> for(int i=0;i<bv.size();i++) {
> // ensure a set bit can be git'
> assertFalse(bv.get(i));
> bv.set(i);
> assertTrue(bv.get(i));
> }
> }
>
> /**
> * Test the clear() method on BitVectors of various sizes.
> * @throws Exception
> */
> public void testClear() throws Exception {
> doTestClearVectorOfSize(8);
> doTestClearVectorOfSize(20);
> doTestClearVectorOfSize(100);
> doTestClearVectorOfSize(1000);
> }
>
> private void doTestClearVectorOfSize(int n) {
> BitVector bv = new BitVector(n);
> for(int i=0;i<bv.size();i++) {
> // ensure a set bit is cleared
> assertFalse(bv.get(i));
> bv.set(i);
> assertTrue(bv.get(i));
> bv.clear(i);
> assertFalse(bv.get(i));
> }
> }
>
> /**
> * Test the count() method on BitVectors of various sizes.
> * @throws Exception
> */
> public void testCount() throws Exception {
> doTestCountVectorOfSize(8);
> doTestCountVectorOfSize(20);
> doTestCountVectorOfSize(100);
> doTestCountVectorOfSize(1000);
> }
>
> private void doTestCountVectorOfSize(int n) {
> BitVector bv = new BitVector(n);
> // test count when incrementally setting bits
> for(int i=0;i<bv.size();i++) {
> assertFalse(bv.get(i));
> assertEquals(i,bv.count());
> bv.set(i);
> assertTrue(bv.get(i));
> assertEquals(i+1,bv.count());
> }
>
> bv = new BitVector(n);
> // test count when setting then clearing bits
> for(int i=0;i<bv.size();i++) {
> assertFalse(bv.get(i));
> assertEquals(0,bv.count());
> bv.set(i);
> assertTrue(bv.get(i));
> assertEquals(1,bv.count());
> bv.clear(i);
> assertFalse(bv.get(i));
> assertEquals(0,bv.count());
> }
> }
>
> /**
> * Test writing and construction to/from Directory.
> * @throws Exception
> */
> public void testWriteRead() throws Exception {
> doTestWriteRead(8);
> doTestWriteRead(20);
> doTestWriteRead(100);
> doTestWriteRead(1000);
> }
>
> private void doTestWriteRead(int n) throws Exception {
> Directory d = new RAMDirectory();
>
> BitVector bv = new BitVector(n);
> // test count when incrementally setting bits
> for(int i=0;i<bv.size();i++) {
> assertFalse(bv.get(i));
> assertEquals(i,bv.count());
> bv.set(i);
> assertTrue(bv.get(i));
> assertEquals(i+1,bv.count());
> bv.write(d, "TESTBV");
> BitVector compare = new BitVector(d, "TESTBV");
> // compare bit vectors with bits set incrementally
> assertTrue(doCompare(bv,compare));
> }
> }
>
> /**
> * Compare two BitVectors (really, this should be an equals
> method on the BitVector itself...
> * @param bv One bit vector
> * @param compare The second to compare
> */
> private boolean doCompare(BitVector bv, BitVector compare) {
> boolean equal = true;
> for(int i=0;i<bv.size();i++) {
> // bits must be equal
> if(bv.get(i)!=compare.get(i)) {
> equal = false;
> break;
> }
> }
> return equal;
> }
> }
>
> > --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
__________________________________________________
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>