package org.ensembl.mart.lib.test; import java.io.File; import java.net.URL; import java.util.logging.Logger; import junit.framework.Test; import junit.framework.TestSuite; import org.ensembl.mart.lib.BasicFilter; import org.ensembl.mart.lib.FieldAttribute; import org.ensembl.mart.lib.Filter; import org.ensembl.mart.lib.FormatSpec; import org.ensembl.mart.lib.IDListFilter; import org.ensembl.mart.lib.Query; import org.ensembl.util.PropertiesUtil; /** JUnit TestSuite. * @testfamily JUnit * @testkind testsuite * @testsetup Default TestSuite * @testpackage org.ensembl.mart.explorer.test*/ public class QueryCompilerTest extends Base { private Logger logger = Logger.getLogger(QueryCompilerTest.class.getName()); public final String STABLE_ID_REL = "data/unitTests/gene_stable_id.test"; private StatOutputStream stats = new StatOutputStream(); private FormatSpec formatspec = new FormatSpec(FormatSpec.TABULATED, "\t"); public QueryCompilerTest(String name) { super(name); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite(QueryCompilerTest.class); return suite; } public static Test TestClass(String testclass) { TestSuite suite = new TestSuite(); suite.addTest(new QueryCompilerTest(testclass)); return suite; } /** * Convenience method for executing query and printing some results. */ private void executeQuery(Query query) throws Exception { engine.execute(query, formatspec, stats); // System.out.println(query); // System.out.println(stats); assertTrue("No text returned from query", stats.getCharCount() > 0); assertTrue("No lines returned from query", stats.getLineCount() > 0); } public void testQueryCopy() throws Exception { Query q = new Query(genequery); assertTrue("Query Copy Constructor creating a equal copy\n", genequery.equals(q)); } public void testChrQuery() throws Exception { Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); q.addFilter(new BasicFilter("chr_name","main","gene_id_key", "=", "3")); executeQuery(q); } public void testStableIDQuery() throws Exception { Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); q.addFilter(new IDListFilter("gene_stable_id","main","gene_id_key", new String[] { "ENSG00000005175" })); executeQuery(q); } /** * Test filtering on stable ids from a file. */ public void testStableIDsFromFileQuery() throws Exception { Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); q.addFilter(new IDListFilter("gene_stable_id","main","gene_id_key", new File(PropertiesUtil.class.getClassLoader().getResource(STABLE_ID_REL).getFile()))); executeQuery(q); } public void testStableIDsFromURLQuery() throws Exception { // in practice this is effectively the same as testStableIDsFromFile because // the implementation converts the file to a url. We include this test incase future // implementations work differently. Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); URL stableidurl = QueryCompilerTest.class.getClassLoader().getResource(STABLE_ID_REL); q.addFilter(new IDListFilter("gene_stable_id","main","gene_id_key", stableidurl)); executeQuery(q); } public void testJoinToPFAM() throws Exception { Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); q.addAttribute(new FieldAttribute("pfam_bool","main","gene_id_key")); executeQuery(q); } public void testUnprocessedFilterHandlers() throws Exception { Filter chrFilter = new BasicFilter("chr_name", "main", "gene_id_key", "=", "1"); // Generic Handler relies on a DatasetConfig so below tests can't work anymore // //Marker // Query q = new Query(genequery); // q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); // q.addFilter(chrFilter); // // Filter start = new BasicFilter("glook_marker_start","hsapiens__marker__look",null, "=", "AFMA272XC9", "org.ensembl.mart.lib.GenericHandler"); // Filter end = new BasicFilter("glook_marker_end","hsapiens__marker__look",null, "=", "RH10794", "org.ensembl.mart.lib.GenericHandler"); // // q.addFilter(start); // q.addFilter(end); // // executeQuery(q); // // //Band // q = new Query(genequery); // q.addAttribute(new FieldAttribute("gene_stable_id", "main","gene_id_key")); // q.addFilter(chrFilter); // // start = new BasicFilter("glook_band_start","hsapiens__karotype__look",null, "=", "p36.33", "org.ensembl.mart.lib.GenericHandler"); // end = new BasicFilter("glook_band_end","hsapiens__karotype__look",null, "=", "p36.33", "org.ensembl.mart.lib.GenericHandler"); // // q.addFilter(start); // q.addFilter(end); // executeQuery(q); // //// //Encode // q = new Query(genequery); // // q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); // // Filter test = new BasicFilter("glook_encode_region","main","gene_id_key", "=", "13:29450016:29950015", "org.ensembl.mart.lib.GenericHandler"); // // q.addFilter(test); // executeQuery(q); //// //// //Qtl // q = new Query(genequery); // q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); // // test = new BasicFilter("qtl","main","gene_id_key", "=", "4:82189556:83189556", "org.ensembl.mart.lib.GenericHandler"); // // q.addFilter(test); // executeQuery(q); //Expression Query q = new Query(genequery); q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); Filter anatomical_filter = new BasicFilter("est.anatomical_site","main","gene_id_key", "=", "ovary"); Filter development_filter = new BasicFilter("est.development_stage","main","gene_id_key", "=", "adult"); q.addFilter(anatomical_filter); q.addFilter(development_filter); executeQuery(q); //GO //q = new Query(genequery); //q.addAttribute(new FieldAttribute("gene_stable_id","main","gene_id_key")); //Filter evidence_code = new BasicFilter("go_evidence_code:IEA","main","gene_id_key", "only", null, "org.ensembl.mart.lib.GOFilterHandler"); //Filter mol_function_filter = new BasicFilter("go_molecular_function","main","gene_id_key", "=", "GO:0003673", "org.ensembl.mart.lib.GOFilterHandler"); //q.addFilter(evidence_code); //q.addFilter(mol_function_filter); //executeQuery(q); //TODO:GO /* mol Function GO:0003673 biol proc GO:0008150 cell comp GO:0005575 go_evidence_code:IEA excluded 5345 entries ====== mol Function chaperone activity biol proc development cell comp cell go_evidence_code:IEA excluded 3 entries */ } public static void main(String[] args) { if (args.length > 0) junit.textui.TestRunner.run(TestClass(args[0])); else junit.textui.TestRunner.run(suite()); } }