Package test.apache.kato.common

Source Code of test.apache.kato.common.TestArrayBitMaskMappingStrategy

/*******************************************************************************
* 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 test.apache.kato.common;

import junit.framework.TestCase;

import org.apache.kato.common.ArrayBitMaskMappingStrategy;

public class TestArrayBitMaskMappingStrategy extends TestCase {

 
 
  public void report(int arraySize,int elementNo1,int elementNo2) {
   
   
    System.out.println("Array Size        = "+arraySize);
    System.out.println("Element Nos       = "+elementNo1+","+elementNo2+" ("+Integer.toBinaryString(elementNo2));
    int maxBitShift=  (int) (31 - (Math.log10(arraySize)/Math.log10(2)))+1;
    System.out.println("Maximum bit shift = "+maxBitShift);
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(arraySize,2);
   
    int arrayIndex1 =   c.getIndexArrayElement(elementNo1);
    int seekCount1  =   c.getSeekCount(elementNo1);
   
    System.out.println("Array Index1       = "+arrayIndex1+" : "+seekCount1);
   
    int arrayIndex2 =  c.getIndexArrayElement(elementNo2);
    int seekCount2  =  c.getSeekCount(elementNo2);
   
    System.out.println("Array Index2       = "+arrayIndex2+" : "+seekCount2);
   
    int bitcount=(int) (Math.log10(elementNo2)/Math.log10(2))+1;
    int max= ( 1 << bitcount ) -1;
    System.out.println("Element2 bitcount  = "+bitcount+" ( Max is "+max+")");
    int newBucketSize=max/arraySize;
    int bitcountBS=(int) (Math.log10(newBucketSize)/Math.log10(2))+1;
    int maxBS= ( 1 << bitcountBS ) -1;
    System.out.println("new bitcount       = "+bitcountBS+" ( Max is "+maxBS+")");
    System.out.println("new bucket size    = "+maxBS+"  ("+(maxBS*arraySize)+")("+Integer.toBinaryString(maxBS));
   
   
  }
 
 
 
  public void testArraySize1bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(8,c.getArraySize());

   
  }

  public void testBucketSize1bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(2,c.getBucketSize());
   
  }
  public void testArraySize5bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(8,c.getArraySize());

   
  }

  public void testBucketSize5bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(32,c.getBucketSize());
   
  }

  public void testGet0ElementFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(0,c.getIndexArrayElement(0));
    assertEquals(0,c.getSeekCount(0));
   
  }
  public void testGet0ElementSeekCountFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(0,c.getSeekCount(0));
   
  }
 
  public void testGet1ElementFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(0,c.getIndexArrayElement(1));
   
   
  }
  public void testGet1ElementSeekFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(1,c.getSeekCount(1));
   
  }
 
  public void testGet3ElementFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(1,c.getIndexArrayElement(3));
   
   
  }
  public void testGet3ElementSeekFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(1,c.getSeekCount(3));
   
  }

  public void testGet15ElementFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(7,c.getIndexArrayElement(15));
   
   
  }
  public void testGet15ElementSeekFrom1Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    assertEquals(1,c.getSeekCount(15));
   
  }
 

  public void testGet0ElementFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(0,c.getIndexArrayElement(0));
    assertEquals(0,c.getSeekCount(0));
   
  }

  public void testGet0ElementSeekCountFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(0,c.getSeekCount(0));
   
  }

  public void testGet1ElementFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(0,c.getIndexArrayElement(1));
   
   
  }

  public void testGet1ElementSeekFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(1,c.getSeekCount(1));
   
  }

  public void testGet3ElementFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(0,c.getIndexArrayElement(3));
   
   
  }

  public void testGet3ElementSeekFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(3,c.getSeekCount(3));
   
  }

  public void testGet64ElementFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(2,c.getIndexArrayElement(64));
   
   
  }

  public void testGet64ElementSeekFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(0,c.getSeekCount(64));
   
  }

  public void testGet500ElementFrom5Bit() {
   
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    assertEquals(-1,c.getIndexArrayElement(500));
   
  }
 
  public void testDoubleCapacityReturnsObject() {
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    ArrayBitMaskMappingStrategy newStrategy=c.doubleCapacity();
    assertNotNull(newStrategy);
  }
  public void testDoubleCapacityReturnsNull() {
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,(Integer.MAX_VALUE/2)+50);
    ArrayBitMaskMappingStrategy newStrategy=c.doubleCapacity();
    assertNull(newStrategy);
  }
  public void testDoubleCapacityArraySize() {
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    ArrayBitMaskMappingStrategy newStrategy=c.doubleCapacity();
    assertEquals(8,newStrategy.getArraySize());
   
   
  }
  public void testDoubleCapacityBucketSize() {
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,30);
    ArrayBitMaskMappingStrategy newStrategy=c.doubleCapacity();
    assertEquals(64,newStrategy.getBucketSize());
   
  }
  public void testSmallArrayMapping1Bit() {
   
    int[] data=new int[8];
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    for(int i=0;i<16;i++) {
      int location=c.getIndexArrayElement(i);
      int seek=c.getSeekCount(i);
      if(seek==0) data[location]=i;
    }
   
    assertEquals(0,data[0]);
    assertEquals(2,data[1]);
    assertEquals(4,data[2]);
    assertEquals(6,data[3]);
    assertEquals(8,data[4]);
    assertEquals(10,data[5]);
    assertEquals(12,data[6]);
    assertEquals(14,data[7]);
   
   
   
  }
 

  public void testSmallArrayDoubling1Bit() {
   
    int[] data=new int[8];
    ArrayBitMaskMappingStrategy c=new ArrayBitMaskMappingStrategy(8,2);
    for(int i=0;i<16;i++) {
      int location=c.getIndexArrayElement(i);
      int seek=c.getSeekCount(i);
      if(seek==0) data[location]=i;
    }
   
    c=c.doubleCapacity();
   
    for(int i=0;i<16;i++) {
      int location=c.getIndexArrayElement(i);
      int seek=c.getSeekCount(i);
      if(seek==0) {
        assertEquals(data[location]*2,i);
      }
    }
     
   
   
  }
 
  public void printWible() {
   
    for(int i=2;i<32;i++) {
      int bitshift=(int) (Math.log10(i-1)/Math.log10(2));
      int shifted= 1 << bitshift;
      int mask   = (1 << (bitshift+1))-1;
      int max    = mask+1;
      System.out.println(""+i+"("+max+")="+bitshift+" "+Integer.toBinaryString(i)+" "+Integer.toBinaryString(shifted)+ " "+Integer.toBinaryString(mask));
    }
  }
}
TOP

Related Classes of test.apache.kato.common.TestArrayBitMaskMappingStrategy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.