package org.nextprot.api.tasks.solr.indexer.entry.diff; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.junit.Assert; import org.junit.Test; import org.nextprot.api.core.domain.Entry; import org.nextprot.api.core.service.TerminologyService; //import org.nextprot.api.core.utils.TerminologyUtils; //import org.nextprot.api.core.domain.Identifier; import org.nextprot.api.solr.index.EntryIndex.Fields; import org.nextprot.api.tasks.solr.indexer.entry.SolrDiffTest; import org.nextprot.api.tasks.solr.indexer.entry.impl.ExpressionFieldBuilder; import org.springframework.beans.factory.annotation.Autowired; public class ExpressionFieldBuilderDiffTest extends SolrDiffTest { @Autowired TerminologyService terminologyService; @Test public void testExpression() { String[] test_list = {"NX_Q8IWA4", "NX_O00115","NX_Q7Z6P3","NX_E5RQL4","NX_O00115","NX_Q7Z6P3", "NX_Q7Z713", "NX_P22102", "NX_Q7Z713", "NX_O00116", "NX_Q7Z713", "NX_O15056"}; for(int i=0; i < 12; i++){ testExpression(getEntry(test_list[i])); } // for(int i=0; i < 10; i++){ testExpression(getEntry(i)); } // 'random' entries //Entry entry = getEntry("NX_P20592"); //Entry entry = getEntry("NX_Q6PK18"); //testExpression(entry); } public void testExpression(Entry entry) { String entryName = entry.getUniqueName(); System.out.println("Testing: " + entryName); ExpressionFieldBuilder efb = new ExpressionFieldBuilder(); efb.setTerminologyService(terminologyService); efb.initializeBuilder(entry); List<String> explist = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.EXPRESSION); Set<String> expectedExpression = null; Set<String> exprSet = null; if(explist != null) { //Get expectedExpression as a Set to remove redundancy expectedExpression = new TreeSet<String>(explist); exprSet = new TreeSet<String>(efb.getFieldValue(Fields.EXPRESSION, List.class)); } if(expectedExpression != null) if (exprSet.size() < expectedExpression.size()) { expectedExpression.removeAll(exprSet); Set<String> missingSet = new TreeSet<String>(); Set<String> finalmissingSet = new TreeSet<String>(expectedExpression); for(String expectedvalue : expectedExpression) { int i = expectedvalue.indexOf("TS-"); if(i != -1) { String ts = expectedvalue.substring(i, i+7); missingSet.add(ts); int j = expectedvalue.indexOf("TS-",i+7); if(j != -1) missingSet.add(expectedvalue.substring(j, j+7)); if(exprSet.containsAll(missingSet)) finalmissingSet.remove(expectedvalue); missingSet.clear(); } else if(expectedvalue.contains("</p>")) { // like TS-0407</p><p><b>cv_name : </b>Stomach glandular cell</p><p><b>cv_synonyms : </b>Gastric glandular cell", // or "Caecum</p><p><b>cv_ancestors : </b>Human anatomical entity", String ts2 = expectedvalue.substring(0,expectedvalue.indexOf("</p>")); if(exprSet.contains(ts2)) finalmissingSet.remove(expectedvalue); } } if(finalmissingSet.size() > 0) { for(String missingvalue : finalmissingSet) System.err.println(missingvalue); String msg = "expression in current solr contains " + finalmissingSet.size() + " more data:"; System.err.println(msg); Assert.fail(msg); } else Assert.assertTrue(true); } } }