Skip to content

Commit

Permalink
Merge pull request #147 from samtools/jc_int_test
Browse files Browse the repository at this point in the history
Added test to check min/max values for i tag in SAM/BAM
  • Loading branch information
jacarey committed Jan 7, 2015
2 parents 29fc83c + 4cd8908 commit 361f71c
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 0 deletions.
97 changes: 97 additions & 0 deletions src/tests/java/htsjdk/samtools/SamSpecIntTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/*
* The MIT License
*
* Copyright (c) 2014 The Broad Institute
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package htsjdk.samtools;

import htsjdk.samtools.util.CloserUtil;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class SamSpecIntTest {
private static final File SAM_INPUT = new File("testdata/htsjdk/samtools/aux.sam");
private static final File BAM_INPUT = new File("testdata/htsjdk/samtools/aux.bam");

@Test
public void testSamIntegers() throws IOException {
final List<String> errorMessages = new ArrayList<String>();
final SamReader samReader = SamReaderFactory.makeDefault().open(SAM_INPUT);
final File bamOutput = File.createTempFile("test", ".bam");
final File samOutput = File.createTempFile("test", ".sam");
final SAMFileWriter samWriter = new SAMFileWriterFactory().makeWriter(samReader.getFileHeader(), true, samOutput, null);
final SAMFileWriter bamWriter = new SAMFileWriterFactory().makeWriter(samReader.getFileHeader(), true, bamOutput, null);

final SAMRecordIterator iterator = samReader.iterator();
while (iterator.hasNext()) {
try {
final SAMRecord rec = iterator.next();
samWriter.addAlignment(rec);
bamWriter.addAlignment(rec);
} catch (final Throwable e) {
System.out.println(e.getMessage());
errorMessages.add(e.getMessage());
}
}

CloserUtil.close(samReader);
samWriter.close();
bamWriter.close();
Assert.assertEquals(errorMessages.size(), 2);
bamOutput.deleteOnExit();
samOutput.deleteOnExit();
}

@Test
public void testBamIntegers() throws IOException {
final List<String> errorMessages = new ArrayList<String>();
final SamReader bamReader = SamReaderFactory.makeDefault().open(BAM_INPUT);
final File bamOutput = File.createTempFile("test", ".bam");
final File samOutput = File.createTempFile("test", ".sam");
final SAMFileWriter samWriter = new SAMFileWriterFactory().makeWriter(bamReader.getFileHeader(), true, samOutput, null);
final SAMFileWriter bamWriter = new SAMFileWriterFactory().makeWriter(bamReader.getFileHeader(), true, bamOutput, null);
final SAMRecordIterator iterator = bamReader.iterator();
while (iterator.hasNext()) {
try {
final SAMRecord rec = iterator.next();
samWriter.addAlignment(rec);
bamWriter.addAlignment(rec);
} catch (final Throwable e) {
System.out.println(e.getMessage());
errorMessages.add(e.getMessage());
}
}

CloserUtil.close(bamReader);
samWriter.close();
bamWriter.close();
Assert.assertEquals(errorMessages.size(), 2);
bamOutput.deleteOnExit();
samOutput.deleteOnExit();
}

}
Binary file added testdata/htsjdk/samtools/aux.bam
Binary file not shown.
26 changes: 26 additions & 0 deletions testdata/htsjdk/samtools/aux.sam
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
@HD VN:1.4 SO:unsorted
@SQ SN:Sheila LN:20
@RG ID:ID SM:foo
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P0:i:0
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P1:i:127
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P2:i:128
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P3:i:255
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P4:i:256
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P5:i:32767
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P6:i:32768
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P7:i:65535
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P8:i:65536
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P9:i:2147483647
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** PA:i:2147483648
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** PB:i:4294967295
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P0:i:-0
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P1:i:-127
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P2:i:-128
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P3:i:-255
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P4:i:-256
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P5:i:-32767
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P6:i:-32768
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P7:i:-65535
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P8:i:-65536
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** P9:i:-2147483647
Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** PA:i:-2147483648

0 comments on commit 361f71c

Please sign in to comment.