@Test(dataProvider = "trimmingData")
  public void testTrimTo(
      final Map<Haplotype, AssemblyResult> haplotypesAndResultSets, final AssemblyRegion original) {
    final AssemblyResultSet subject = new AssemblyResultSet();
    for (final Map.Entry<Haplotype, AssemblyResult> entry : haplotypesAndResultSets.entrySet())
      subject.add(entry.getKey(), entry.getValue());
    subject.setRegionForGenotyping(original);
    final GenomeLoc originalLocation = original.getExtendedSpan();
    final int length = originalLocation.size();
    final GenomeLoc newLocation =
        originalLocation.setStop(
            originalLocation.setStart(originalLocation, originalLocation.getStart() + length / 2),
            originalLocation.getStop() - length / 2);
    final AssemblyRegion newRegion = original.trim(newLocation);

    final Map<Haplotype, Haplotype> originalHaplotypesByTrimmed =
        new HashMap<>(haplotypesAndResultSets.size());
    for (final Haplotype h : haplotypesAndResultSets.keySet())
      originalHaplotypesByTrimmed.put(h.trim(newRegion.getExtendedSpan()), h);

    final AssemblyResultSet trimmed = subject.trimTo(newRegion);

    Assert.assertFalse(subject.wasTrimmed());
    Assert.assertTrue(trimmed.wasTrimmed());

    for (final Haplotype h : trimmed.getHaplotypeList()) {
      Assert.assertEquals(h.getGenomeLocation(), newLocation);
      Assert.assertEquals(h.getBases().length, newLocation.size());
    }
  }
  @Test
  public void testEmptyResultSet() {
    final AssemblyResultSet subject = new AssemblyResultSet();

    Assert.assertEquals(subject.getHaplotypeList().size(), 0);
    Assert.assertEquals(subject.getHaplotypeCount(), 0);
    Assert.assertEquals(subject.getReferenceHaplotype(), null);
    Assert.assertEquals(subject.getFullReferenceWithPadding(), null);
    Assert.assertEquals(subject.getPaddedReferenceLoc(), null);
    Assert.assertEquals(subject.getRegionForGenotyping(), null);
    Assert.assertEquals(subject.getUniqueReadThreadingGraph(10), null);
    Assert.assertFalse(subject.hasMultipleKmerSizes());
  }
  @Test
  public void testAddReferenceHaplotype() {

    final Haplotype ref = new Haplotype("ACGT".getBytes(), true);
    ref.setGenomeLocation(genomeLocParser.createGenomeLoc("1", 1, ref.length() + 1));
    final AssemblyResultSet subject = new AssemblyResultSet();

    Assert.assertTrue(subject.add(ref));
    Assert.assertFalse(subject.add(ref));

    Assert.assertEquals(subject.getReferenceHaplotype(), ref);
    Assert.assertEquals(subject.getHaplotypeCount(), 1);
    Assert.assertEquals(subject.getHaplotypeList().size(), 1);
  }