package htsjdk.tribble; import htsjdk.tribble.bed.BEDCodec; import htsjdk.tribble.bed.BEDFeature; import htsjdk.tribble.readers.LineIterator; import htsjdk.variant.VariantBaseTest; import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.vcf.VCFCodec; import org.testng.annotations.Test; import java.io.IOException; import static org.testng.Assert.*; /** * @author jacob * @date 2013-Apr-10 */ public class AbstractFeatureReaderTest { final static String HTTP_INDEXED_VCF_PATH = "http://www.broadinstitute.org/~picard/testdata/ex2.vcf"; final static String LOCAL_MIRROR_HTTP_INDEXED_VCF_PATH = VariantBaseTest.variantTestDataRoot + "ex2.vcf"; /** * Asserts readability and correctness of VCF over HTTP. The VCF is indexed and requires and index. */ @Test public void testVcfOverHTTP() throws IOException { final VCFCodec codec = new VCFCodec(); final AbstractFeatureReader<VariantContext, LineIterator> featureReaderHttp = AbstractFeatureReader.getFeatureReader(HTTP_INDEXED_VCF_PATH, codec, true); // Require an index to final AbstractFeatureReader<VariantContext, LineIterator> featureReaderLocal = AbstractFeatureReader.getFeatureReader(LOCAL_MIRROR_HTTP_INDEXED_VCF_PATH, codec, false); final CloseableTribbleIterator<VariantContext> localIterator = featureReaderLocal.iterator(); for (final Feature feat : featureReaderHttp.iterator()) { assertEquals(feat.toString(), localIterator.next().toString()); } assertFalse(localIterator.hasNext()); } @Test public void testLoadBEDFTP() throws Exception { final String path = "ftp://ftp.broadinstitute.org/distribution/igv/TEST/cpgIslands with spaces.hg18.bed"; final BEDCodec codec = new BEDCodec(); final AbstractFeatureReader<BEDFeature, LineIterator> bfs = AbstractFeatureReader.getFeatureReader(path, codec, false); for (final Feature feat : bfs.iterator()) { assertNotNull(feat); } } }