Package com.browseengine.bobo.test

Source Code of com.browseengine.bobo.test.FacetHandlerTest

package com.browseengine.bobo.test;

import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.Set;

import junit.framework.TestCase;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;

import com.browseengine.bobo.api.BoboBrowser;
import com.browseengine.bobo.api.BoboIndexReader;
import com.browseengine.bobo.api.BrowseSelection;
import com.browseengine.bobo.api.FacetSpec;
import com.browseengine.bobo.facets.FacetCountCollectorSource;
import com.browseengine.bobo.facets.FacetHandler;
import com.browseengine.bobo.facets.FacetHandler.FacetDataNone;
import com.browseengine.bobo.facets.filter.RandomAccessFilter;
import com.browseengine.bobo.sort.DocComparatorSource;

public class FacetHandlerTest extends TestCase {
  private Directory _ramDir;
  private static class NoopFacetHandler extends FacetHandler<FacetDataNone>
  {

    public NoopFacetHandler(String name) {
      super(name);
    }

    public NoopFacetHandler(String name, Set<String> dependsOn) {
      super(name, dependsOn);
    }



    @Override
    public RandomAccessFilter buildRandomAccessFilter(String value,
        Properties selectionProperty) throws IOException {
      return null;
    }

    @Override
    public FacetCountCollectorSource getFacetCountCollectorSource(BrowseSelection sel,
        FacetSpec fspec) {
      return null;
    }

    @Override
    public String[] getFieldValues(BoboIndexReader reader,int id) {
      return null;
    }

    @Override
    public DocComparatorSource getDocComparatorSource() {
      return null;
    }

    @Override
    public FacetDataNone load(BoboIndexReader reader) throws IOException {
      return FacetDataNone.instance;
    }

    @Override
    public Object[] getRawFieldValues(BoboIndexReader reader,int id) {
      // TODO Auto-generated method stub
      return null;
    }
  }
 
  public FacetHandlerTest(String testname)
  {
    super(testname);
    _ramDir = new RAMDirectory();
    try
    {
      IndexWriter writer = new IndexWriter(_ramDir,new StandardAnalyzer(Version.LUCENE_CURRENT),MaxFieldLength.UNLIMITED);
      writer.close();
    }
    catch(Exception ioe)
    {
      fail("unable to load test");
    }
  }
 
  public void testFacetHandlerLoad() throws Exception
  {
    IndexReader reader = IndexReader.open(_ramDir,true);
   
    List<FacetHandler<?>> list = new LinkedList<FacetHandler<?>>();
    NoopFacetHandler h1 = new NoopFacetHandler("A");
    list.add(h1);
   
    HashSet<String> s2 = new HashSet<String>();
    s2.add("A");
    s2.add("C");
    s2.add("D");
    NoopFacetHandler h2 = new NoopFacetHandler("B",s2);
    list.add(h2);
   
    HashSet<String> s3 = new HashSet<String>();
    s3.add("A");
    s2.add("D");
    NoopFacetHandler h3 = new NoopFacetHandler("C",s3);
    list.add(h3);
   
    HashSet<String> s4 = new HashSet<String>();
    s4.add("A");
    NoopFacetHandler h4 = new NoopFacetHandler("D",s4);
    list.add(h4);
   
    HashSet<String> s5 = new HashSet<String>();
    s5.add("E");
    NoopFacetHandler h5 = new NoopFacetHandler("E",s5);
    list.add(h5);
   
   
    BoboIndexReader boboReader = BoboIndexReader.getInstance(reader,list, null);
   
    BoboBrowser browser = new BoboBrowser(boboReader);
    HashSet<String> s6 = new HashSet<String>();
    s6.add("A");
    s6.add("B");
    s6.add("C");
    s6.add("D");
    browser.setFacetHandler(new NoopFacetHandler("runtime",s6));
   
    Set<String> expected = new  HashSet<String>();
    expected.add("A");
    expected.add("B");
    expected.add("C");
    expected.add("D");
    expected.add("E");
    expected.add("runtime");
   
    Set<String> facetsLoaded = browser.getFacetNames();
   
    Iterator<String> iter = facetsLoaded.iterator();
    while(iter.hasNext())
    {
      String name = iter.next();
      if (expected.contains(name))
      {
        expected.remove(name);
      }
      else
      {
        fail(name+" is not in expected set.");
      }
    }
   
    if (expected.size() > 0)
    {
      fail("some facets not loaded: "+expected);
    }
   
    boboReader.close();
    browser.close();
  }
 
  public void testNegativeLoadTest() throws Exception
  {
    IndexReader reader = IndexReader.open(_ramDir,true);
   
    List<FacetHandler<?>> list = new LinkedList<FacetHandler<?>>();
    HashSet<String> s1 = new HashSet<String>();
    s1.add("C");
    NoopFacetHandler h1 = new NoopFacetHandler("A",s1);
    list.add(h1);
   
    HashSet<String> s2 = new HashSet<String>();
    s2.add("A");
    s2.add("C");
    s2.add("D");
    NoopFacetHandler h2 = new NoopFacetHandler("B",s2);
    list.add(h2);
   
    HashSet<String> s3 = new HashSet<String>();
    s3.add("A");
    s2.add("D");
    NoopFacetHandler h3 = new NoopFacetHandler("C",s3);
    list.add(h3);
   
    HashSet<String> s4 = new HashSet<String>();
    s4.add("A");
    NoopFacetHandler h4 = new NoopFacetHandler("D",s4);
    list.add(h4);
   
    HashSet<String> s5 = new HashSet<String>();
    s5.add("E");
    NoopFacetHandler h5 = new NoopFacetHandler("E",s5);
    list.add(h5);
   
   
    BoboIndexReader boboReader = BoboIndexReader.getInstance(reader,list, null);
   
    BoboBrowser browser = new BoboBrowser(boboReader);
   
   
    Set<String> expected = new  HashSet<String>();
    expected.add("A");
    expected.add("B");
    expected.add("C");
    expected.add("D");
    expected.add("E");
   
    Set<String> facetsLoaded = browser.getFacetNames();
   
    Iterator<String> iter = facetsLoaded.iterator();
    while(iter.hasNext())
    {
      String name = iter.next();
      if (expected.contains(name))
      {
        expected.remove(name);
      }
      else
      {
        fail(name+" is not in expected set.");
      }
    }
   
    if (expected.size() > 0)
    {
      if (expected.size() == 4)
      {
        expected.remove("A");
        expected.remove("B");
        expected.remove("C");
        expected.remove("D");
        if (expected.size() > 0)
        {
          fail("some facets not loaded: "+expected);
        }
      }
      else
      {
        fail("incorrect number of left over facets: "+expected);
      }
    }
    else
    {
      fail("some facets should not have been loaded.");
    }
   
    boboReader.close();
    browser.close();
  }
}
TOP

Related Classes of com.browseengine.bobo.test.FacetHandlerTest

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.