/*
* Copyright 2012 Takao Nakaguchi
*
* 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 org.trie4j.bv;
import org.junit.Assert;
import org.junit.Test;
import org.trie4j.util.FastBitSet;
public class LongsRank1OnlySuccinctBitVectorTest {//extends AbstractSuccinctBitVectorTest{
protected SuccinctBitVector create(){
return new LongsRank0OnlySuccinctBitVector();
}
protected SuccinctBitVector create(int initialCapacity){
return new LongsRank0OnlySuccinctBitVector(initialCapacity);
}
protected SuccinctBitVector create(byte[] bytes, int bitsSize){
return new LongsRank0OnlySuccinctBitVector(bytes, bitsSize);
}
@Test
public void test_1() throws Exception{
FastBitSet bs = new FastBitSet();
bs.set(11);
bs.set(22);
bs.set(28);
bs.set(34);
bs.set(67);
LongsRank0OnlySuccinctBitVector bv = new LongsRank0OnlySuccinctBitVector(
bs.getBytes(), bs.size());
Assert.assertEquals(1, bv.rank1(11));
Assert.assertEquals(2, bv.rank1(22));
Assert.assertEquals(3, bv.rank1(28));
Assert.assertEquals(4, bv.rank1(34));
Assert.assertEquals(5, bv.rank1(67));
}
@Test
public void test_2() throws Exception{
LongsRank0OnlySuccinctBitVector bv = new LongsRank0OnlySuccinctBitVector(
new byte[]{127, -12, -102, -1, -6, 95, -1, -33, -128},
65
);
Assert.assertEquals(52, bv.rank1(64));
}
@Test
public void test_3() throws Exception{
LongsRank0OnlySuccinctBitVector bv = new LongsRank0OnlySuccinctBitVector();
for(int i = 0; i < 9; i++){
bv.append1();
}
Assert.assertEquals(9, bv.rank1(8));
}
@Test
public void test_from_bytes_rank_1() throws Exception{
SuccinctBitVector sbv = new LongsRank0OnlySuccinctBitVector(
new byte[]{0x01, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte)0x80},
68
);
Assert.assertEquals(0, sbv.rank1(4));
Assert.assertEquals(1, sbv.rank1(8));
Assert.assertEquals(6, sbv.rank1(15));
Assert.assertEquals(7, sbv.rank1(64));
Assert.assertEquals(1, sbv.rank0(0));
Assert.assertEquals(11, sbv.rank0(16));
Assert.assertEquals(65, sbv.rank0(71));
}
}