/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * */ package org.biojava.nbio.sequencing.io.fastq; import junit.framework.TestCase; /** * Unit test for FastqBuilder. */ public final class FastqBuilderTest extends TestCase { public void testConstructor() { FastqBuilder fastqBuilder = new FastqBuilder(); assertNotNull(fastqBuilder); } public void testBuildDefault() { try { FastqBuilder fastqBuilder = new FastqBuilder(); fastqBuilder.build(); fail("build default expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildNullDescription() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription(null) .withSequence("sequence") .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build null description expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildNullSequence() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence(null) .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build null sequence expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildNullAppendSequence() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .appendSequence(null) .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build null append sequence expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildNullQuality() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .withQuality(null) .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build null quality expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildNullAppendQuality() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .appendQuality(null) .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build null append quality expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildNullVariant() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .withQuality("quality_") .withVariant(null); fastqBuilder.build(); fail("build null variant expected IllegalArgumentException"); } catch (IllegalArgumentException e) { // expected } } public void testBuildMissingDescription() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withSequence("sequence") .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build missing description expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildMissingSequence() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build missing sequence expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildMissingQuality() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build missing quality expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildDefaultVariant() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .withQuality("quality_"); Fastq fastq = fastqBuilder.build(); assertEquals("description", fastqBuilder.getDescription()); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); assertEquals("description", fastq.getDescription()); assertEquals("sequence", fastq.getSequence()); assertEquals("quality_", fastq.getQuality()); assertEquals(FastqBuilder.DEFAULT_VARIANT, fastq.getVariant()); } public void testBuild() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); Fastq fastq = fastqBuilder.build(); assertEquals("description", fastqBuilder.getDescription()); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); assertEquals("description", fastq.getDescription()); assertEquals("sequence", fastq.getSequence()); assertEquals("quality_", fastq.getQuality()); assertEquals(FastqVariant.FASTQ_SOLEXA, fastq.getVariant()); } public void testBuildAppendSequence() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .appendSequence("seq") .appendSequence("uence") .withQuality("quality_") .withVariant(FastqVariant.FASTQ_SOLEXA); Fastq fastq = fastqBuilder.build(); assertEquals("description", fastqBuilder.getDescription()); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); assertEquals("description", fastq.getDescription()); assertEquals("sequence", fastq.getSequence()); assertEquals("quality_", fastq.getQuality()); assertEquals(FastqVariant.FASTQ_SOLEXA, fastq.getVariant()); } public void testBuildAppendQuality() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("sequence") .appendQuality("qual") .appendQuality("ity_") .withVariant(FastqVariant.FASTQ_SOLEXA); Fastq fastq = fastqBuilder.build(); assertEquals("description", fastqBuilder.getDescription()); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); assertEquals("description", fastq.getDescription()); assertEquals("sequence", fastq.getSequence()); assertEquals("quality_", fastq.getQuality()); assertEquals(FastqVariant.FASTQ_SOLEXA, fastq.getVariant()); } public void testBuildNonMatchingSequenceQualityScoreLengthsBothNull() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withVariant(FastqVariant.FASTQ_SOLEXA); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); } public void testBuildNonMatchingSequenceQualityScoreLengthsSequenceNull() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withQuality("0123") .withVariant(FastqVariant.FASTQ_SOLEXA); assertEquals(false, fastqBuilder.sequenceAndQualityLengthsMatch()); } public void testBuildNonMatchingSequenceQualityScoreLengthsQualityNull() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("ACTG") .withVariant(FastqVariant.FASTQ_SOLEXA); assertEquals(false, fastqBuilder.sequenceAndQualityLengthsMatch()); } public void testBuildNonMatchingSequenceQualityScoreLengths0() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("01234") .withQuality("0123") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build sequence length > quality length expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildNonMatchingSequenceQualityScoreLengths1() { try { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withSequence("0123") .withQuality("01234") .withVariant(FastqVariant.FASTQ_SOLEXA); fastqBuilder.build(); fail("build sequence length < quality length expected IllegalStateException"); } catch (IllegalStateException e) { // expected } } public void testBuildMultiple() { FastqBuilder fastqBuilder = new FastqBuilder() .withDescription("description") .withQuality("quality__") .withVariant(FastqVariant.FASTQ_SOLEXA); for (int i = 0; i < 10; i++) { Fastq fastq = fastqBuilder.withSequence("sequence" + i).build(); assertEquals("description", fastqBuilder.getDescription()); assertTrue(fastqBuilder.sequenceAndQualityLengthsMatch()); assertEquals("description", fastq.getDescription()); assertEquals("sequence" + i, fastq.getSequence()); assertEquals("quality__", fastq.getQuality()); assertEquals(FastqVariant.FASTQ_SOLEXA, fastq.getVariant()); } } }