Package align.filter.aligner.align

Source Code of align.filter.aligner.align.CommonAlgorithmTest

package align.filter.aligner.align;

import static loomchild.util.testing.Utils.assertListEquals;
import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

import org.junit.Before;
import org.junit.Test;

import align.Alignment;
import align.filter.aligner.align.algorithm.galechurch.GaleChurchAlignAlgorithm;
import align.filter.aligner.align.algorithm.moore.MooreAlignAlgorithm;
import align.filter.aligner.align.onetoone.OneToOneAlgorithm;

/**
* Test wykonywany dla wszystkich alignerów, testujący ich wspólne cechy.
* Nowe alignery trzeba dodać w odpowidniej metodzie inicjalizującej.
*
* @author Jarek Lipski (loomchild)
*/
public class CommonAlgorithmTest {

  private List<AlignAlgorithm> alignerList;
 
  @Before
  public void setUp() {
    this.alignerList = createAlignerList();
  }
 
  /**
   * Testuje czy próba dopasowania pustych list zwraca pustą liste dopasowań.
   */
  @Test
  public void alignZeroToZeroReturnsEmptyList() {
    for (AlignAlgorithm aligner : alignerList) {
      checkAlignZeroToZeroReturnsEmptyList(aligner);
    }
  }
 
  public void checkAlignZeroToZeroReturnsEmptyList(AlignAlgorithm aligner) {
    List<Alignment> alignmentList = aligner.align(
        Arrays.asList(new String[]{}), Arrays.asList(new String[]{}));
    assertEquals(0, alignmentList.size());
  }

  @Test
  public void noOmissions() {
    for (AlignAlgorithm aligner : alignerList) {
      try {
        checkNoOmissions(aligner);
      } catch (AlignmentImpossibleException e) {
        //ignoruje alignery które nie mogą dopasowywać danych testowych
        //może zrobić oddzielną grupę alignerów albo zmienić test
      }
    }
  }

  public void checkNoOmissions(AlignAlgorithm aligner) {
    String[] sourceArray = new String[]{"a", "b", "c", "d", "ee"};
    String[] targetArray = new String[]{"1", "2", ""};
    List<Alignment> alignmentList = aligner.align(
        Arrays.asList(sourceArray), Arrays.asList(targetArray));
    List<String> alignedSourceList = new LinkedList<String>();
    List<String> alignedTargetList = new LinkedList<String>();
    for (Alignment alignment : alignmentList) {
      alignedSourceList.addAll(alignment.getSourceSegmentList());
      alignedTargetList.addAll(alignment.getTargetSegmentList());
    }
    assertListEquals(sourceArray, alignedSourceList);
    assertListEquals(targetArray, alignedTargetList);
  }
 
  /**
   * Miejsce do umieszczania wszystkich alignerów do przetestowania.
   */
  private List<AlignAlgorithm> createAlignerList() {
    List<AlignAlgorithm> alignerList = new LinkedList<AlignAlgorithm>();
   
    alignerList.add(new OneToOneAlgorithm());
    alignerList.add(new GaleChurchAlignAlgorithm());
    alignerList.add(new MooreAlignAlgorithm());
   
    return alignerList;
  }
 
}
TOP

Related Classes of align.filter.aligner.align.CommonAlgorithmTest

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.