Package cleo.search.test

Source Code of cleo.search.test.TestWeight

/*
* 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 cleo.search.test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

import cleo.search.util.Weight;
import cleo.search.util.Weights;

import junit.framework.TestCase;

/**
* TestWeight
*
* @author jwu
* @since 04/26, 2011
*/
public class TestWeight extends TestCase {
  private Random rand = new Random();
 
  public void testApiBasics() {
    int elemId = rand.nextInt();
   
    Weight w1 = new Weight(elemId, rand.nextInt());
    Weight w2 = new Weight(elemId, rand.nextInt());
    Weight w3 = new Weight(elemId, rand.nextInt());
   
    assertTrue(w1.equals(w2));
    assertTrue(w2.equals(w3));
    assertEquals(w1.hashCode(), w2.hashCode());
    assertEquals(w2.hashCode(), w3.hashCode());
   
    HashSet<Weight> set1 = new HashSet<Weight>();
    set1.add(w1);
    set1.add(w2);
    set1.add(w3);
    assertEquals(1, set1.size());
   
    HashSet<Weight> set2 = new HashSet<Weight>();
    set2.add(w1);
    set2.add(w2);
    set2.add(w3);
   
    Weight w4 = new Weight(++elemId, rand.nextInt());
    Weight w5 = new Weight(++elemId, rand.nextInt());
    set2.add(w4);
    set2.add(w5);
    assertEquals(3, set2.size());
   
    List<Weight> list1 = new ArrayList<Weight>();
    list1.addAll(set1);

    List<Weight> list2 = new ArrayList<Weight>();
    list2.addAll(set2);
   
    List<Weight> resultList = Weights.merge(list1, list2);
    assertEquals(1, resultList.size());
    assertEquals(list1.get(0), resultList.get(0));
   
    int totalWeight = 0;
    for(Weight w : resultList) {
      totalWeight += w.elementWeight;
    }
   
    int totalWeight1 = 0;
    for(Weight w : list1) {
      totalWeight1 += w.elementWeight;
    }
   
    assertEquals(totalWeight1, totalWeight);
   
    resultList = Weights.merge(list2, list1);
    assertEquals(3, resultList.size());
   
    totalWeight = 0;
    for(Weight w : resultList) {
      totalWeight += w.elementWeight;
    }
   
    int totalWeight2 = 0;
    for(Weight w : list2) {
      totalWeight2 += w.elementWeight;
    }
   
    assertEquals(totalWeight2, totalWeight);
  }
 
  public void testMerge() {
    Set<Weight> activeSet = new HashSet<Weight>();
    Set<Weight> changeSet = new HashSet<Weight>();
    Set<Weight> resultSet = new HashSet<Weight>();
    List<Weight> activeList = new ArrayList<Weight>();
    List<Weight> changeList = new ArrayList<Weight>();
    List<Weight> resultList;
   
    int elemId = rand.nextInt();
   
    Weight w1 = new Weight(elemId, rand.nextInt());
    Weight w2 = new Weight(elemId, rand.nextInt());
    Weight w3 = new Weight(elemId, rand.nextInt());
   
    Weight w4 = new Weight(++elemId, rand.nextInt());
    Weight w5 = new Weight(++elemId, rand.nextInt());
    Weight w6 = new Weight(++elemId, rand.nextInt());
   
    // Test Set
    activeSet.add(w1);
    activeSet.add(w2);
    activeSet.add(w3);
    activeSet.add(w4);
    assertEquals(2, activeSet.size());
   
    changeSet.add(w1);
    changeSet.add(w2);
    changeSet.add(w3);
    changeSet.add(w5);
    changeSet.add(w6);
    assertEquals(3, changeSet.size());
   
    resultSet.add(w1);
    resultSet.add(w4);
    assertEquals(2, resultSet.size());
   
    // Test List
    activeList.add(w1);
    activeList.add(w2);
    activeList.add(w3);
    activeList.add(w4);
    assertEquals(4, activeList.size());
   
    changeList.add(w1);
    changeList.add(w2);
    changeList.add(w3);
    changeList.add(w5);
    changeList.add(w6);
    assertEquals(5, changeList.size());
   
    // Test merge
    resultList = Weights.merge(null, null);
    assertEquals(0, resultList.size());
   
    resultList = Weights.merge(null, changeList);
    assertEquals(0, resultList.size());
   
    resultList = Weights.merge(activeList, null);
    assertEquals(activeSet.size(), resultList.size());
   
    resultList = Weights.merge(activeList, changeList);
    assertEquals(activeSet.size(), resultList.size());
    assertEquals(resultSet.size(), resultList.size());
  }
}
TOP

Related Classes of cleo.search.test.TestWeight

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.