Skip to content

Commit

Permalink
split populateSlicesAndIndexingParametersTest into 1 and 2 slice vers…
Browse files Browse the repository at this point in the history
…ions
  • Loading branch information
jmthibault79 committed Mar 15, 2019
1 parent 336fe6b commit 63a30b5
Showing 1 changed file with 66 additions and 13 deletions.
79 changes: 66 additions & 13 deletions src/test/java/htsjdk/samtools/cram/structure/ContainerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,19 +156,70 @@ public void getSpansTest(final List<CramCompressionRecord> records,

// this is part of the deserialization process, and supports index creation

// single slice

@Test
public static void populateSlicesAndIndexingParametersTest() {
public static void populateSlicesAndIndexingParametersTest1() {
// this container starts 100,000 bytes into the CRAM stream
final int containerStreamByteOffset = 100000;

// this Container consists of:
// a header of size 1234 bytes
// a Slice of size 789 bytes
// a Slice of size 5555 bytes
// a Slice of size 6262 bytes

final int containerHeaderSize = 1234;
final int slice0size = 789;
final int sliceSize = 6262;

final Container container = createContainer1(containerStreamByteOffset, containerHeaderSize, sliceSize);

assertSliceIndexingParams(container.slices[0], 0, containerStreamByteOffset, sliceSize, containerHeaderSize);
}

// two slices

@Test
public static void populateSlicesAndIndexingParametersTest2() {
// this container starts 200,000 bytes into the CRAM stream
final int containerStreamByteOffset = 200000;

// this Container consists of:
// a header of size 3234 bytes
// a Slice of size 7890 bytes
// a Slice of size 5555 bytes

final int containerHeaderSize = 3234;
final int slice0size = 7890;
final int slice1size = 5555;

final Container container = createContainer2(containerStreamByteOffset, containerHeaderSize, slice0size, slice1size);

assertSliceIndexingParams(container.slices[0], 0, containerStreamByteOffset, slice0size, containerHeaderSize);
assertSliceIndexingParams(container.slices[1], 1, containerStreamByteOffset, slice1size, containerHeaderSize + slice0size);
}

private static Container createContainer1(final int containerStreamByteOffset,
final int containerHeaderSize,
final int slice0size) {
final ReferenceContext refContext = new ReferenceContext(0);

final Container container = new Container(refContext);
container.offset = containerStreamByteOffset;
container.containerByteSize = slice0size;
container.landmarks = new int[]{
containerHeaderSize, // beginning of slice
};

final ArrayList<Slice> slices = new ArrayList<Slice>() {{
add(new Slice(refContext));
}};
container.populateSlicesAndIndexingParameters(slices);
return container;
}

private static Container createContainer2(final int containerStreamByteOffset,
final int containerHeaderSize,
final int slice0size,
final int slice1size) {
final int containerDataSize = slice0size + slice1size;

final ReferenceContext refContext = new ReferenceContext(0);
Expand All @@ -186,15 +237,17 @@ public static void populateSlicesAndIndexingParametersTest() {
add(new Slice(refContext));
}};
container.populateSlicesAndIndexingParameters(slices);
return container;
}

Assert.assertEquals(container.slices[0].index, 0);
Assert.assertEquals(container.slices[0].containerOffset, containerStreamByteOffset);
Assert.assertEquals(container.slices[0].size, slice0size);
Assert.assertEquals(container.slices[0].offset, containerHeaderSize);

Assert.assertEquals(container.slices[1].index, 1);
Assert.assertEquals(container.slices[1].containerOffset, containerStreamByteOffset);
Assert.assertEquals(container.slices[1].size, slice1size);
Assert.assertEquals(container.slices[1].offset, containerHeaderSize + slice0size);
private static void assertSliceIndexingParams(final Slice slice,
final int expectedIndex,
final int expectedContainerOffset,
final int expectedSize,
final int expectedOffset) {
Assert.assertEquals(slice.index, expectedIndex);
Assert.assertEquals(slice.containerOffset, expectedContainerOffset);
Assert.assertEquals(slice.size, expectedSize);
Assert.assertEquals(slice.offset, expectedOffset);
}
}

0 comments on commit 63a30b5

Please sign in to comment.