catch attempts at merging empty kmers
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index 17132e4..d6fa8bd 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -505,6 +505,9 @@
* : the next kmer
*/
public void mergeWithFFKmer(int initialKmerSize, VKmerBytesWritable kmer) {
+ if (lettersInKmer == 0 || kmer.lettersInKmer == 0) {
+ throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + kmer + "'.");
+ }
int preKmerLength = lettersInKmer;
int preSize = bytesUsed;
lettersInKmer += kmer.lettersInKmer - initialKmerSize + 1;
@@ -538,6 +541,9 @@
* : the next kmer
*/
public void mergeWithFRKmer(int initialKmerSize, VKmerBytesWritable kmer) {
+ if (lettersInKmer == 0 || kmer.lettersInKmer == 0) {
+ throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + kmer + "'.");
+ }
int preSize = bytesUsed;
int preKmerLength = lettersInKmer;
lettersInKmer += kmer.lettersInKmer - initialKmerSize + 1;
@@ -605,6 +611,9 @@
* : the previous kmer
*/
public void mergeWithRRKmer(int initialKmerSize, VKmerBytesWritable preKmer) {
+ if (lettersInKmer == 0 || preKmer.lettersInKmer == 0) {
+ throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + preKmer + "'.");
+ }
int preKmerLength = lettersInKmer;
int preSize = bytesUsed;
lettersInKmer += preKmer.lettersInKmer - initialKmerSize + 1;
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
index 850d24f..73ddff4 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
@@ -184,6 +184,7 @@
Assert.assertEquals(text2, kmer2.toString());
VKmerBytesWritable merge = new VKmerBytesWritable();
+ merge.setAsCopy(kmer1);
merge.mergeWithFRKmer(kmerSize, kmer2);
Assert.assertEquals(result, merge.toString());
@@ -221,6 +222,7 @@
Assert.assertEquals(text2, kmer2.toString());
VKmerBytesWritable merge = new VKmerBytesWritable();
+ merge.setAsCopy(kmer1);
merge.mergeWithRFKmer(kmerSize, kmer2);
Assert.assertEquals(result, merge.toString());