diff --git a/src/main/java/htsjdk/samtools/CigarElement.java b/src/main/java/htsjdk/samtools/CigarElement.java index c645e6cc2..016956c56 100644 --- a/src/main/java/htsjdk/samtools/CigarElement.java +++ b/src/main/java/htsjdk/samtools/CigarElement.java @@ -36,6 +36,7 @@ private final CigarOperator operator; public CigarElement(final int length, final CigarOperator operator) { + if (length < 0) throw new IllegalArgumentException(String.format("Cigar element being constructed with negative length: %d and operation: %s" , length, operator.name())); this.length = length; this.operator = operator; } diff --git a/src/test/java/htsjdk/samtools/util/CigarElementUnitTest.java b/src/test/java/htsjdk/samtools/util/CigarElementUnitTest.java new file mode 100644 index 000000000..54cfdedfc --- /dev/null +++ b/src/test/java/htsjdk/samtools/util/CigarElementUnitTest.java @@ -0,0 +1,14 @@ +package htsjdk.samtools.util; + + +import htsjdk.samtools.CigarElement; +import htsjdk.samtools.CigarOperator; +import org.testng.annotations.Test; + +public class CigarElementUnitTest { + + @Test(expectedExceptions = IllegalArgumentException.class) + public void testNegativeLengthCheck(){ + final CigarElement element = new CigarElement(-1, CigarOperator.M); + } +}