/* * Copyright (c) 2011 LinkedIn, Inc * * 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 com.flaptor.indextank.index.scorer; import static com.flaptor.util.TestInfo.TestType.UNIT; import java.io.IOException; import java.util.HashSet; import java.util.Set; import java.util.concurrent.locks.ReentrantReadWriteLock; import com.flaptor.indextank.IndexTankTestCase; import com.flaptor.indextank.index.scorer.CategoryMaskManager.CategoryValueInfo; import com.flaptor.util.Pair; import com.flaptor.util.TestInfo; public class CategoryMaskManagerTest extends IndexTankTestCase { @TestInfo(testType=UNIT) public void testBitmapsColision() throws IOException { CategoryMaskManager manager = new CategoryMaskManager(new ReentrantReadWriteLock()); String[] categories = new String[] {"type", "value", "type2", "type3", "value3", "type23", "type4", "value4", "type24", "type5", "value5", "type25", "type6", "value6", "type26"}; String[] values = new String[] {"1", "ONE", "TwO", "12", "ONE2", "TwO2"}; Set<Pair<String, CategoryValueInfo>> categoryValueInfos = new HashSet<Pair<String, CategoryValueInfo>>(); for (int i = 0; i < categories.length; i++) { for (int j = 0; j < values.length; j++) { CategoryValueInfo categoryValueInfo = manager.getCategoryValueInfo(categories[i], values[j]); assertEquals(j + 1, categoryValueInfo.getValueCode()); categoryValueInfos.add(new Pair(categories[i],categoryValueInfo)); } } for (Pair<String, CategoryValueInfo> categoryValueInfo : categoryValueInfos) { for (Pair<String, CategoryValueInfo> categoryValueInfo2 : categoryValueInfos) { if (!categoryValueInfo.first().equals(categoryValueInfo2.first())) { int[] bitmask = categoryValueInfo.last().getBitmask(); int[] bitmask2 = categoryValueInfo2.last().getBitmask(); for (int i = 0; i < Math.min(bitmask.length, bitmask2.length); i++) { assertEquals(0, (int)(bitmask[i] & bitmask2[i])); } } } } } }