RefMetaDataTracker has complete set of get() functions for List<RodBinding<T>>
Including unit tests
This commit is contained in:
parent
03741fb640
commit
e4a67f3df1
|
|
@ -32,7 +32,6 @@ import java.util.*;
|
|||
*/
|
||||
public class RefMetaDataTracker {
|
||||
// TODO: this should be a list, not a map, actually
|
||||
|
||||
private final static RODRecordList EMPTY_ROD_RECORD_LIST = new RODRecordListImpl("EMPTY");
|
||||
|
||||
final Map<String, RODRecordList> map;
|
||||
|
|
@ -138,6 +137,26 @@ public class RefMetaDataTracker {
|
|||
return getFirstValue(rodBinding.getType(), rodBinding.getVariableName(), onlyAtThisLoc);
|
||||
}
|
||||
|
||||
public <T extends Feature> T getFirstValue(final Collection<RodBinding<T>> rodBindings) {
|
||||
for ( RodBinding<T> rodBinding : rodBindings ) {
|
||||
T val = getFirstValue(rodBinding);
|
||||
if ( val != null )
|
||||
return val;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public <T extends Feature> T getFirstValue(final Collection<RodBinding<T>> rodBindings, final GenomeLoc onlyAtThisLoc) {
|
||||
for ( RodBinding<T> rodBinding : rodBindings ) {
|
||||
T val = getFirstValue(rodBinding, onlyAtThisLoc);
|
||||
if ( val != null )
|
||||
return val;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean hasValues(final RodBinding rodBinding) {
|
||||
return hasValues(rodBinding.getVariableName());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ public class RefMetaDataTrackerUnitTest {
|
|||
RefMetaDataTracker tracker = test.makeTracker();
|
||||
|
||||
for ( String nameAsString : Arrays.asList("A", "B") ) {
|
||||
RodBinding<Feature> binding = new RodBinding(Feature.class, nameAsString, "none", new Tags());
|
||||
RodBinding<Feature> binding = new RodBinding<Feature>(Feature.class, nameAsString, "none", new Tags());
|
||||
List<Feature> v1 = tracker.getValues(binding);
|
||||
testGetter(nameAsString, v1, test.expected(nameAsString), true, tracker);
|
||||
|
||||
|
|
@ -241,6 +241,29 @@ public class RefMetaDataTrackerUnitTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(enabled = true, dataProvider = "tests")
|
||||
public void testGettersAsListOfRodBindings(MyTest test) {
|
||||
logger.warn("Testing " + test + " for get() methods for List<RodBindings>");
|
||||
RefMetaDataTracker tracker = test.makeTracker();
|
||||
|
||||
String nameAsString = "A+B";
|
||||
RodBinding<Feature> A = new RodBinding<Feature>(Feature.class, "A", "none", new Tags());
|
||||
RodBinding<Feature> B = new RodBinding<Feature>(Feature.class, "B", "none", new Tags());
|
||||
List<RodBinding<Feature>> binding = Arrays.asList(A, B);
|
||||
|
||||
List<Feature> v1 = tracker.getValues(binding);
|
||||
testGetter(nameAsString, v1, test.expected(nameAsString), true, tracker);
|
||||
|
||||
List<Feature> v2 = tracker.getValues(binding, locus);
|
||||
testGetter(nameAsString, v2, startingHere(test.expected(nameAsString)), true, tracker);
|
||||
|
||||
Feature v3 = tracker.getFirstValue(binding);
|
||||
testGetter(nameAsString, Arrays.asList(v3), test.expected(nameAsString), false, tracker);
|
||||
|
||||
Feature v4 = tracker.getFirstValue(binding, locus);
|
||||
testGetter(nameAsString, Arrays.asList(v4), startingHere(test.expected(nameAsString)), false, tracker);
|
||||
}
|
||||
|
||||
private List<GATKFeature> startingHere(List<GATKFeature> l) {
|
||||
List<GATKFeature> x = new ArrayList<GATKFeature>();
|
||||
for ( GATKFeature f : l ) if ( f.getStart() == locus.getStart() ) x.add(f);
|
||||
|
|
|
|||
Loading…
Reference in New Issue