package org.ensembl.mart.lib.test;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import org.ensembl.mart.lib.BasicFilter;
import org.ensembl.mart.lib.FieldAttribute;
import org.ensembl.mart.lib.FormatSpec;
import org.ensembl.mart.lib.Query;
/**
* Tests that Mart Explorer Sequence retrieval works by comparing it's output to that of ensj.
*
* @author craig
*
*/
public class AttributeTest extends Base {
public static void main(String[] args) {
if (args.length > 0)
TestRunner.run(TestClass(args[0]));
else
TestRunner.run(suite());
}
public static Test suite() {
TestSuite suite = new TestSuite();
//suite.addTest(new AttributeTest("testKakaQuery"));
suite.addTestSuite( AttributeTest.class );
return suite;
}
public static Test TestClass(String testclass) {
TestSuite suite = new TestSuite();
suite.addTest(new AttributeTest(testclass));
return suite;
}
public AttributeTest(String name) {
super(name);
}
public void testKakaQuery() throws Exception {
Query q = new Query(genequery);
q.addAttribute(new FieldAttribute("chr_name","main","gene_id_key"));
q.addAttribute(new FieldAttribute("gene_chrom_start","main","gene_id_key"));
q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key"));
q.addFilter(new BasicFilter("chr_name","main","gene_id_key", "=", "22"));
q.addFilter(new BasicFilter("gene_chrom_start","main","gene_id_key", "<", "15000000"));
StatOutputStream stats = new StatOutputStream();
engine.execute(q, new FormatSpec(FormatSpec.TABULATED), stats);
assertTrue("No text returned from query", stats.getCharCount() > 0);
assertTrue("No lines returned from query", stats.getLineCount() > 0);
stats.close();
}
public void testSimpleQueries() throws Exception {
Query q = new Query(genequery);
q.setPrimaryKeys(new String[] { "gene_id_key", "transcript_id_key" });
q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key"));
q.addFilter(new BasicFilter("chr_name","main","gene_id_key", "=", "22"));
StatOutputStream stats = new StatOutputStream();
engine.execute(q, new FormatSpec(FormatSpec.TABULATED), stats);
assertTrue("No text returned from query", stats.getCharCount() > 0);
assertTrue("No lines returned from query", stats.getLineCount() > 0);
stats.close();
}
public void testSimpleSNPQueries() throws Exception {
Query q = new Query(snpquery);
q.addAttribute(new FieldAttribute("external_id","main","snp_id_key"));
q.addAttribute(new FieldAttribute("allele","main","snp_id_key"));
q.addFilter(new BasicFilter("chr_name","main","snp_id_key", "=", "21"));
StatOutputStream stats = new StatOutputStream();
engine.execute(q, new FormatSpec(FormatSpec.TABULATED), stats);
assertTrue("No text returned from query", stats.getCharCount() > 0);
assertTrue("No lines returned from query", stats.getLineCount() > 0);
stats.close();
}
//TODO: need better documentation on the need for this test
// public void testDisambiguationQueries() throws Exception {
// String geneID = "ENSG00000079974";
// String expectedDiseaseID = "RB2B_HUMAN";
// Query q = new Query(genequery);
//
// q.addAttribute(new FieldAttribute("display_id_list", "hsapiens_gene_ensembl__xref_uniprot_swissprot__dm", "transcript_id_key"));
// q.addFilter(new BasicFilter("gene_stable_id", "main", "gene_id_key","=", geneID));
// ByteArrayOutputStream out = new ByteArrayOutputStream();
// engine.execute(q, new FormatSpec(FormatSpec.TABULATED), out);
// out.close();
// String actualDiseaseID = out.toString().trim();
// assertEquals(
// "Got wrong disease ID for gene " + geneID,
// expectedDiseaseID,
// actualDiseaseID);
// }
}