Package it.unimi.dsi.mg4j.search

Source Code of it.unimi.dsi.mg4j.search.ConsecutiveDocumentIteratorTest

package it.unimi.dsi.mg4j.search;

import it.unimi.dsi.mg4j.search.ConsecutiveDocumentIterator;
import it.unimi.dsi.mg4j.search.DocumentIterator;
import it.unimi.dsi.util.Interval;

import java.io.IOException;

import junit.framework.TestCase;

public class ConsecutiveDocumentIteratorTest extends TestCase {

  public void testTrue() throws IOException {
    IntArrayDocumentIterator i0 = new IntArrayDocumentIterator( new int[] { 0, 1, 2, 3 },
        new int[][][] {
        { { 0, 1 }, { 1, 2 } },
        { { 0, 1 }, { 1, 2 } },
        { {} },
        { { 0 } },
        } );
    IntArrayDocumentIterator i1 = new IntArrayDocumentIterator( new int[] { 0, 1, 2, 3 },
        new int[][][] {
        { {} },
        { {} },
        { { 2 } },
        { { 1 } },
        } );
    IntArrayDocumentIterator i2 = new IntArrayDocumentIterator( new int[] { 0, 1, 2, 3 },
        new int[][][] {
        { {} },
        { { 2 }, { 5 } },
        { {} },
        { { 2 } },
        } );
    DocumentIterator consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1, i2 );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 0, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 1 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertEquals( Interval.valueOf( 1, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 1, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 1, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 2, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 2, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertEquals( 3, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 3, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
   
    i0.reset();
    i1.reset();
    i2.reset();

    consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1, i2 );
    assertEquals( 2, consecutiveDocumentIterator.skipTo( 2 ) );
    assertEquals( 2, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 3, consecutiveDocumentIterator.nextDocument() );
    assertFalse( consecutiveDocumentIterator.hasNext() );

    i0.reset();
    i1.reset();
    i2.reset();

    consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( new DocumentIterator[] { i0, i1, i2 }, new int[] { 1, 1, 1 } );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 0, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 1, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 1, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 5 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 2, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 2, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
   
  }

  public void testIntervalIterator() throws IOException {
    IntArrayDocumentIterator i0 = new IntArrayDocumentIterator( new int[] { 0 },
        new int[][][] {
        { { 0, 1 }, { 1, 2 } },
        } );
    IntArrayDocumentIterator i1 = new IntArrayDocumentIterator( new int[] { 0 },
        new int[][][] {
        { { 2, 3 } },
        } );
    IntArrayDocumentIterator i2 = new IntArrayDocumentIterator( new int[] { 0 },
        new int[][][] {
        { { 4, 5 } },
        } );
    DocumentIterator consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1, i2 );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 0, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 5 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertNull( consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.hasNext() );
   
  }

  public void testMultipleAlignments() throws IOException {
    IntArrayDocumentIterator i0 = new IntArrayDocumentIterator( new int[] { 0 },
        new int[][][] {
        { { 0, 1 }, { 1, 2 } },
        } );
    IntArrayDocumentIterator i1 = new IntArrayDocumentIterator( new int[] { 0 },
        new int[][][] {
        { { 3, 4 } },
        } );
    DocumentIterator consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1 );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( Interval.valueOf( 1, 4 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
  }
 
  public void testIndexIntervalIterator() throws IOException {
    IntArrayIndexIterator i0 = new IntArrayIndexIterator( new int[] { 0, 1, 2, 3 },
        new int[][] {
        { 0, 3 },
        { 2 },
        { 0 },
        { 0, 1, 2, 3, 4, 5, 6 },
        } );
    IntArrayIndexIterator i1 = new IntArrayIndexIterator( new int[] { 0, 1, 2, 3 },
        new int[][] {
        { 1, 4 },
        { 1 },
        { 1 },
        { 1, 5, 8 },
        } );
    IntArrayIndexIterator i2 = new IntArrayIndexIterator( new int[] { 0, 1, 2, 3 },
        new int[][] {
        { 2, 5 },
        { 0 },
        { 2 },
        { 4, 6 },
        } );
    DocumentIterator consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1, i2 );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 0, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertEquals( Interval.valueOf( 3, 5 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 2, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 2, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 3, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 3, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 4, 6 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertFalse( consecutiveDocumentIterator.hasNext() );

   
    i0.reset();
    i1.reset();
    i2.reset();

    consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( i0, i1, i2 );
    assertEquals( 2, consecutiveDocumentIterator.skipTo( 1 ) );
    assertEquals( 2, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 0, 2 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 3, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 3, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 4, 6 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertFalse( consecutiveDocumentIterator.hasNext() );

    i0.reset();
    i1.reset();
    i2.reset();

    consecutiveDocumentIterator = ConsecutiveDocumentIterator.getInstance( new DocumentIterator[] { i0, i1, i2 }, new int[] { 1, 0, 0 } );
    assertTrue( consecutiveDocumentIterator.hasNext() );
    assertEquals( 0, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 0, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 2, 5 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertEquals( 3, consecutiveDocumentIterator.nextDocument() );
    assertEquals( 3, consecutiveDocumentIterator.document() );
    assertEquals( Interval.valueOf( 3, 6 ), consecutiveDocumentIterator.intervalIterator().nextInterval() );
    assertFalse( consecutiveDocumentIterator.intervalIterator().hasNext() );
    assertFalse( consecutiveDocumentIterator.hasNext() );
  }

}
TOP

Related Classes of it.unimi.dsi.mg4j.search.ConsecutiveDocumentIteratorTest

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.