// Copyright (C) 2011-2012 CRS4.
//
// This file is part of Seal.
//
// Seal is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation, either version 3 of the License, or (at your option)
// any later version.
//
// Seal is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with Seal. If not, see <http://www.gnu.org/licenses/>.
package tests.it.crs4.seal.common;
import it.crs4.seal.common.AlignOp;
import it.crs4.seal.common.WritableMapping;
import java.util.List;
import java.util.Set;
import java.nio.ByteBuffer;
import org.junit.*;
import static org.junit.Assert.*;
public class TestWritableMapping
{
private WritableMapping unmapped;
private WritableMapping mapped;
private String mappedSeq = "GGGGGGGGGG";
private String mappedQual = "$$$$$$$$$$";
@Before
public void setup()
{
unmapped = new WritableMapping();
mapped = new WritableMapping("read2", mappedSeq, mappedQual);
mapped.setIsRead1(true);
mapped.setIsMapped(true);
mapped.setContig("contig");
mapped.set5Position(123);
mapped.setMapQ(30);
mapped.setAlignment(AlignOp.scanCigar("" + mappedSeq.length() + "M"));
}
@Test
public void testDefaultConstructor()
{
unmapped = new WritableMapping();
assertNull(unmapped.getName());
assertNull(unmapped.getSequence());
assertNull(unmapped.getBaseQualities());
assertEquals(0x4, unmapped.getFlag());
assertFalse(unmapped.isTemplateLengthAvailable());
}
@Test
public void testStringConstructor()
{
String seq = "AAAAAAAAAA";
String qual = "##########";
unmapped = new WritableMapping("read1", seq, qual);
assertEquals(seq, unmapped.getSequenceString());
assertEquals(qual, unmapped.getBaseQualitiesString());
}
@Test
public void testName()
{
String name = "hello";
unmapped.setName(name);
assertEquals(name, unmapped.getName());
}
@Test
public void testFlag()
{
int flag = 152;
unmapped.setFlag(flag);
assertEquals(flag, unmapped.getFlag());
}
@Test
public void testContig()
{
assertEquals("contig", mapped.getContig());
}
@Test(expected=IllegalStateException.class)
public void testUnmappedContig()
{
unmapped.getContig();
}
@Test
public void testPosition()
{
assertEquals(123, mapped.get5Position());
}
@Test(expected=IllegalStateException.class)
public void testUnmappedPosition()
{
unmapped.get5Position();
}
@Test
public void testMapQ()
{
assertEquals(30, mapped.getMapQ());
}
@Test(expected=IllegalStateException.class)
public void testUnmappedMapQ()
{
unmapped.getMapQ();
}
@Test
public void testAlignment()
{
assertNotNull(mapped.getAlignment());
}
@Test(expected=IllegalStateException.class)
public void testUnmappedAlignment()
{
unmapped.getAlignment();
}
@Test
public void testLength()
{
assertEquals(mappedSeq.length(), mapped.getLength());
}
@Test
public void testClear()
{
mapped.clear();
assertNull(mapped.getName());
assertNull(mapped.getSequence());
assertNull(mapped.getBaseQualities());
assertEquals(0x4, mapped.getFlag());
assertFalse(mapped.isTemplateLengthAvailable());
}
@Test(expected=IllegalStateException.class)
public void testUnmappedTemplateLength()
{
unmapped.setTemplateLength(33);
}
@Test(expected=IllegalStateException.class)
public void testUnpairedTemplateLength()
{
mapped.setTemplateLength(33);
}
@Test(expected=IllegalStateException.class)
public void testUnmappedMateTemplateLength()
{
mapped.setIsPaired(true);
mapped.setIsMateUnmapped(true);
mapped.setTemplateLength(33);
}
@Test
public void testOkTemplateLength()
{
mapped.setIsPaired(true);
mapped.setIsMateUnmapped(false);
mapped.setTemplateLength(33);
assertTrue(mapped.isTemplateLengthAvailable());
assertEquals(33, mapped.getTemplateLength());
}
@Test
public void testSetIsPaired()
{
unmapped.setIsPaired(true);
assertTrue(unmapped.isPaired());
unmapped.setIsPaired(false);
assertFalse(unmapped.isPaired());
}
@Test
public void testSetIsProperlyPaired()
{
unmapped.setIsProperlyPaired(true);
assertTrue(unmapped.isProperlyPaired());
unmapped.setIsProperlyPaired(false);
assertFalse(unmapped.isProperlyPaired());
}
@Test
public void testSetIsMapped()
{
unmapped.setIsMapped(true);
assertTrue(unmapped.isMapped());
unmapped.setIsMapped(false);
assertFalse(unmapped.isMapped());
}
@Test
public void testSetIsUnmapped()
{
unmapped.setIsUnmapped(true);
assertTrue(unmapped.isUnmapped());
unmapped.setIsUnmapped(false);
assertFalse(unmapped.isUnmapped());
}
@Test
public void testSetIsMateMapped()
{
unmapped.setIsMateMapped(true);
assertTrue(unmapped.isMateMapped());
unmapped.setIsMateMapped(false);
assertFalse(unmapped.isMateMapped());
}
@Test
public void testSetIsMateUnmapped()
{
unmapped.setIsMateUnmapped(true);
assertTrue(unmapped.isMateUnmapped());
unmapped.setIsMateUnmapped(false);
assertFalse(unmapped.isMateUnmapped());
}
@Test
public void testSetIsOnReverse()
{
unmapped.setIsOnReverse(true);
assertTrue(unmapped.isOnReverse());
unmapped.setIsOnReverse(false);
assertFalse(unmapped.isOnReverse());
}
@Test
public void testSetIsMateOnReverse()
{
unmapped.setIsMateOnReverse(true);
assertTrue(unmapped.isMateOnReverse());
unmapped.setIsMateOnReverse(false);
assertFalse(unmapped.isMateOnReverse());
}
@Test
public void testSetIsRead1()
{
unmapped.setIsRead1(true);
assertTrue(unmapped.isRead1());
unmapped.setIsRead1(false);
assertFalse(unmapped.isRead1());
}
@Test
public void testSetIsRead2()
{
unmapped.setIsRead2(true);
assertTrue(unmapped.isRead2());
unmapped.setIsRead2(false);
assertFalse(unmapped.isRead2());
}
@Test
public void testSetIsSecondaryAlign()
{
unmapped.setIsSecondaryAlign(true);
assertTrue(unmapped.isSecondaryAlign());
unmapped.setIsSecondaryAlign(false);
assertFalse(unmapped.isSecondaryAlign());
}
@Test
public void testSetIsFailedQC()
{
unmapped.setIsFailedQC(true);
assertTrue(unmapped.isFailedQC());
unmapped.setIsFailedQC(false);
assertFalse(unmapped.isFailedQC());
}
@Test
public void testSetIsDuplicate()
{
unmapped.setIsDuplicate(true);
assertTrue(unmapped.isDuplicate());
unmapped.setIsDuplicate(false);
assertFalse(unmapped.isDuplicate());
}
@Test
public void testSetTag() throws NoSuchFieldException
{
assertFalse(mapped.hasTag("XX"));
mapped.setTag("XX", WritableMapping.TagDataType.Int, "22");
assertEquals(22, mapped.getIntTag("XX"));
}
@Test
public void testGetTagNames()
{
mapped.setTag("X1", WritableMapping.TagDataType.Int, "22");
mapped.setTag("X2", WritableMapping.TagDataType.String, "bla");
mapped.setTag("X3", WritableMapping.TagDataType.String, "lab");
Set<String> tagSet = mapped.getTagNames();
assertEquals(3, tagSet.size());
assertTrue(tagSet.contains("X1"));
assertTrue(tagSet.contains("X2"));
assertTrue(tagSet.contains("X3"));
}
@Test
public void testClearTags()
{
assertFalse(mapped.hasTag("XX"));
mapped.setTag("XX", WritableMapping.TagDataType.Int, "22");
assertTrue(mapped.hasTag("XX"));
mapped.clear();
assertFalse(mapped.hasTag("XX"));
}
public static void main(String args[]) {
org.junit.runner.JUnitCore.main(TestWritableMapping.class.getName());
}
}