@Test public void testEqualsWithNullHeader() { final String seqLine = "GATTACA"; final String qualHeaderPrefix = ""; final String qualLine = "ABCDEFG"; final FastqRecord fastqRecord1 = new FastqRecord("", seqLine, qualHeaderPrefix, qualLine); final FastqRecord fastqRecord2 = new FastqRecord("header", seqLine, qualHeaderPrefix, qualLine); Assert.assertNotEquals(fastqRecord1, fastqRecord2); Assert.assertNotEquals(fastqRecord2, fastqRecord1); Assert.assertNotEquals(fastqRecord1.hashCode(), fastqRecord2.hashCode()); Assert.assertNotEquals(fastqRecord2.hashCode(), fastqRecord1.hashCode()); Assert.assertEquals(fastqRecord1.hashCode(), fastqRecord1.hashCode()); Assert.assertEquals(fastqRecord2.hashCode(), fastqRecord2.hashCode()); }
@Test public void testEqualsWithNullBaseQualityHeader() { final String seqHeaderPrefix = "header"; final String seqLine = "GATTACA"; final String qualLine = "ABCDEFG"; final FastqRecord fastqRecord1 = new FastqRecord(seqHeaderPrefix, seqLine, null, qualLine); final FastqRecord fastqRecord2 = new FastqRecord(seqHeaderPrefix, seqLine, "qualHeaderPrefix", qualLine); Assert.assertNotEquals(fastqRecord1, fastqRecord2); Assert.assertNotEquals(fastqRecord2, fastqRecord1); Assert.assertNotEquals(fastqRecord1.hashCode(), fastqRecord2.hashCode()); Assert.assertNotEquals(fastqRecord2.hashCode(), fastqRecord1.hashCode()); Assert.assertEquals(fastqRecord1.hashCode(), fastqRecord1.hashCode()); Assert.assertEquals(fastqRecord2.hashCode(), fastqRecord2.hashCode()); }
@Test public void testNotEqualQuals() { final String seqLine1 = "GATTACA"; final String qualLine1 = "ABCDEFG"; final String seqLine2 = seqLine1; final String qualLine2 = seqLine2.replace('A', 'X'); final FastqRecord fastqRecord1 = new FastqRecord("header", seqLine1, "qualHeaderPrefix", qualLine1); final FastqRecord fastqRecord2 = new FastqRecord("header", seqLine2, "qualHeaderPrefix", qualLine2); Assert.assertNotEquals(fastqRecord1, fastqRecord2); Assert.assertNotEquals(fastqRecord2, fastqRecord1); Assert.assertEquals(fastqRecord1.getReadString(), fastqRecord2.getReadString()); Assert.assertNotEquals(fastqRecord1.getBaseQualityString(), fastqRecord2.getBaseQualityString()); Assert.assertNotEquals(fastqRecord1.hashCode(), fastqRecord2.hashCode()); Assert.assertNotEquals(fastqRecord2.hashCode(), fastqRecord1.hashCode()); }
@Test public void testNotEqualStrings() { final String seqLine1 = "GATTACA"; final String qualLine1 = "ABCDEFG"; final String seqLine2 = seqLine1.replace('A', 'X'); final String qualLine2 = qualLine1; final FastqRecord fastqRecord1 = new FastqRecord("header", seqLine1, "qualHeaderPrefix", qualLine1); final FastqRecord fastqRecord2 = new FastqRecord("header", seqLine2, "qualHeaderPrefix", qualLine2); Assert.assertNotEquals(fastqRecord1, fastqRecord2); Assert.assertNotEquals(fastqRecord2, fastqRecord1); Assert.assertNotEquals(fastqRecord1.getReadString(), fastqRecord2.getReadString()); Assert.assertEquals(fastqRecord1.getBaseQualityString(), fastqRecord2.getBaseQualityString()); Assert.assertNotEquals(fastqRecord1.hashCode(), fastqRecord2.hashCode()); Assert.assertNotEquals(fastqRecord2.hashCode(), fastqRecord1.hashCode()); }
@Test public void testEmptyRecord() { //Note: this does not blow up now but it will once we enforce non empty fields final FastqRecord record = new FastqRecord(null, (String) null, null, null); // assert how null is handled Assert.assertNull(record.getReadName()); Assert.assertNull(record.getReadString()); Assert.assertNull(record.getBaseQualityString()); Assert.assertEquals(record.getReadBases(), SAMRecord.NULL_SEQUENCE); Assert.assertEquals(record.getBaseQualities(), SAMRecord.NULL_QUALS); // copy the FastqRecord to check that equals and hashCode is working for the null read without blow up final FastqRecord copy = new FastqRecord(record); Assert.assertEquals(record, copy); Assert.assertEquals(record.hashCode(), copy.hashCode()); }