package org.nextprot.api.tasks.solr.indexer.entry.diff; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.nextprot.api.core.domain.Entry; 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.NamesFieldBuilder; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; public class NamesFieldBuilderDiffTest extends SolrDiffTest { @Test public void testNames() { String[] test_list = {"NX_Q8IWA4", "NX_O00115","NX_Q7Z6P3","NX_E5RQL4","NX_Q12809","NX_Q7Z6P3", "NX_Q7Z713", "NX_P22102", "NX_Q8IYV9", "NX_O00116", "NX_Q7Z713", "NX_O15056"}; for(int i=0; i < test_list.length; i++){ testNames(getEntry(test_list[i])); } //for(int i=0; i < 80; i++){ testNames(getEntry(i)); } // 'random' entries //Entry entry = getEntry("NX_P62805"); //testNames(entry); } public void testNames(Entry entry) { String entryName = entry.getUniqueName(); System.out.println("Testing: " + entryName); NamesFieldBuilder nfb = new NamesFieldBuilder(); nfb.initializeBuilder(entry); // RECOMMENDED_NAME are indexed and tested with the overviewFieldBuilder String expectedGenenames = (String) getValueForFieldInCurrentSolrImplementation(entryName, Fields.RECOMMENDED_GENE_NAMES); String nowGenenames = nfb.getFieldValue(Fields.RECOMMENDED_GENE_NAMES, String.class); List<String> altnamelist = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.ALTERNATIVE_NAMES); Set<String> expectedAltnames = null; Set<String> AltenameSet = null; if(altnamelist != null) { expectedAltnames = new TreeSet<String>(altnamelist); AltenameSet = new TreeSet<String>(nfb.getFieldValue(Fields.ALTERNATIVE_NAMES, List.class)); //System.err.println("expected: " + expectedAltnames); //System.err.println(AltenameSet); if(AltenameSet.size() > expectedAltnames.size()) { AltenameSet.removeAll(expectedAltnames); System.err.println("WARNING: " + AltenameSet + " should also be indexed as an ALTERNATIVE_NAMES token"); } else Assert.assertEquals(expectedAltnames.size(), AltenameSet.size()); } List<String> altgenlist = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.ALTERNATIVE_GENE_NAMES); Set<String> expectedAltGenename = null; Set<String> AltGenenameSet = null; if(altgenlist != null) { expectedAltGenename = new TreeSet<String>(altgenlist); AltGenenameSet = new TreeSet<String>(nfb.getFieldValue(Fields.ALTERNATIVE_GENE_NAMES, List.class)); //System.err.println(expectedAltGenename); //System.err.println(AltGenenameSet); Assert.assertEquals(expectedAltGenename.size(), AltGenenameSet.size()); } List<String> expectedCD = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.CD_ANTIGEN); if(expectedCD != null) { Assert.assertEquals(expectedCD, nfb.getFieldValue(Fields.CD_ANTIGEN, List.class)); } List<String> expectedINN = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.INTERNATIONAL_NAME); if(expectedINN != null) { Assert.assertEquals(expectedCD, nfb.getFieldValue(Fields.INTERNATIONAL_NAME, List.class)); } List<String> expectedRNList = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.REGION_NAME); Set<String> expectedRNSet = null; Set<String> RNSet = null; if(expectedRNList != null) { expectedRNSet = new TreeSet<String>(expectedRNList); RNSet = new TreeSet<String>(nfb.getFieldValue(Fields.REGION_NAME, List.class)); Assert.assertEquals(expectedRNSet, RNSet); } List<String> orflist = (List) getValueForFieldInCurrentSolrImplementation(entryName, Fields.ORF_NAMES); Set<String> expectedorfnames = null; Set<String> orfnameSet = null; if(orflist != null) { expectedorfnames = new TreeSet<String>(orflist); //System.err.println(expectedorfnames); if(nfb.getFieldValue(Fields.ORF_NAMES, List.class) != null) orfnameSet = new TreeSet<String>(nfb.getFieldValue(Fields.ORF_NAMES, List.class)); //System.err.println(expectedorfnames); //System.err.println(orfnameSet); Assert.assertEquals(expectedorfnames, orfnameSet); } String expectedfamilies = (String) getValueForFieldInCurrentSolrImplementation(entryName, Fields.FAMILY_NAMES); if(expectedfamilies != null) { //System.err.println(expectedfamilies); Set<String> expectedFamilySet = new TreeSet<String>(Arrays.asList(expectedfamilies.split(" , "))); Set<String> FamilySet = new TreeSet<String>(Arrays.asList(nfb.getFieldValue(Fields.FAMILY_NAMES, String.class).split(" , "))); Assert.assertEquals(expectedFamilySet, FamilySet); } } }