/*
* 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;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* Abstract unit test for implementations of FastqWriter.
*/
public abstract class AbstractFastqWriterTest
extends TestCase
{
/**
* Create and return a new FASTQ formatted sequence suitable for testing.
*
* @return a new FASTQ formatted sequence suitable for testing.
*/
protected abstract Fastq createFastq();
/**
* Create and return a new instance of an implementation of FastqWriter to test.
*
* @return a new instance of an implementation of FastqWriter to test
*/
protected abstract FastqWriter createFastqWriter();
public void testCreateFastq()
{
Fastq fastq = createFastq();
assertNotNull(fastq);
}
public void testCreateFastqWriter()
{
FastqWriter writer = createFastqWriter();
assertNotNull(writer);
}
public void testAppendVararg() throws Exception
{
FastqWriter writer = createFastqWriter();
Appendable appendable = new StringBuilder();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
assertSame(appendable, writer.append(appendable, fastq0));
assertSame(appendable, writer.append(appendable, fastq0, fastq1));
assertSame(appendable, writer.append(appendable, fastq0, fastq1, fastq2));
assertSame(appendable, writer.append(appendable, fastq0, fastq1, fastq2, null));
assertSame(appendable, writer.append(appendable, (Fastq) null));
try
{
writer.append((Appendable) null, fastq0);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
public void testAppendIterable() throws Exception
{
FastqWriter writer = createFastqWriter();
Appendable appendable = new StringBuilder();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
List<Fastq> list = new ArrayList<Fastq>();
assertSame(appendable, writer.append(appendable, list));
list.add(fastq0);
assertSame(appendable, writer.append(appendable, list));
list.add(fastq1);
assertSame(appendable, writer.append(appendable, list));
list.add(fastq2);
assertSame(appendable, writer.append(appendable, list));
list.add(null);
assertSame(appendable, writer.append(appendable, list));
try
{
writer.append((Appendable) null, list);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
try
{
writer.append(appendable, (Iterable<Fastq>) null);
fail("append(,null) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
public void testWriteFileVararg() throws Exception
{
FastqWriter writer = createFastqWriter();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
File file0 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file0, fastq0);
File file1 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file1, fastq0, fastq1);
File file2 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file2, fastq0, fastq1, fastq2);
File file3 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file3, fastq0, fastq1, fastq2, null);
File file4 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file4, (Fastq) null);
try
{
writer.write((File) null, fastq0);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
public void testWriteFileIterable() throws Exception
{
FastqWriter writer = createFastqWriter();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
List<Fastq> list = new ArrayList<Fastq>();
File file0 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file0, list);
list.add(fastq0);
File file1 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file1, list);
list.add(fastq1);
File file2 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file2, list);
list.add(fastq2);
File file3 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file3, list);
list.add(null);
File file4 = File.createTempFile("abstractFastqWriterTest", null);
writer.write(file4, list);
File file5 = File.createTempFile("abstractFastqWriterTest", null);
try
{
writer.write((File) null, fastq0);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
try
{
writer.write(file5, (Iterable<Fastq>) null);
fail("append(,null) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
public void testWriteOutputStreamVararg() throws Exception
{
FastqWriter writer = createFastqWriter();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
OutputStream outputStream = new ByteArrayOutputStream();
writer.write(outputStream, fastq0);
writer.write(outputStream, fastq0, fastq1);
writer.write(outputStream, fastq0, fastq1, fastq2);
writer.write(outputStream, fastq0, fastq1, fastq2, null);
writer.write(outputStream, (Fastq) null);
try
{
writer.write((OutputStream) null, fastq0);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
public void testWriteOutputStreamIterable() throws Exception
{
FastqWriter writer = createFastqWriter();
Fastq fastq0 = createFastq();
Fastq fastq1 = createFastq();
Fastq fastq2 = createFastq();
OutputStream outputStream = new ByteArrayOutputStream();
List<Fastq> list = new ArrayList<Fastq>();
writer.write(outputStream, list);
list.add(fastq0);
writer.write(outputStream, list);
list.add(fastq1);
writer.write(outputStream, list);
list.add(fastq2);
writer.write(outputStream, list);
list.add(null);
writer.write(outputStream, list);
try
{
writer.write((OutputStream) null, fastq0);
fail("append(null,) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
try
{
writer.write(outputStream, (Iterable<Fastq>) null);
fail("append(,null) expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
// expected
}
}
}