import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import junit.extensions.PA;
+
import org.testng.annotations.Test;
public class SequenceFeaturesTest
* no type specified - get all types stored
* they are returned in keyset (alphabetical) order
*/
- Iterable<String> types = sf.varargToTypes();
- Iterator<String> iterator = types.iterator();
+ Map<String, FeatureStore> featureStores = (Map<String, FeatureStore>) PA
+ .getValue(sf, "featureStore");
+
+ Iterable<FeatureStore> types = sf.varargToTypes();
+ Iterator<FeatureStore> iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Cath");
+ assertSame(iterator.next(), featureStores.get("Cath"));
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
/*
types = sf.varargToTypes(new String[] {});
iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Cath");
+ assertSame(iterator.next(), featureStores.get("Cath"));
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
/*
types = sf.varargToTypes((String[]) null);
iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Cath");
+ assertSame(iterator.next(), featureStores.get("Cath"));
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
/*
types = sf.varargToTypes("Metal");
iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
/*
* two types specified - get sorted alphabetically
*/
- types = sf.varargToTypes("Metal", "Helix");
+ types = sf.varargToTypes("Metal", "Cath");
iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Helix");
+ assertSame(iterator.next(), featureStores.get("Cath"));
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
/*
- * null type included - should get removed
+ * null type included - should be ignored
*/
types = sf.varargToTypes("Metal", null, "Helix");
iterator = types.iterator();
assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Helix");
- assertTrue(iterator.hasNext());
- assertEquals(iterator.next(), "Metal");
+ assertSame(iterator.next(), featureStores.get("Metal"));
assertFalse(iterator.hasNext());
}
public void testShiftFeatures()
{
SequenceFeatures store = new SequenceFeatures();
- assertFalse(store.shiftFeatures(1));
+ assertFalse(store.shiftFeatures(0, 1));
SequenceFeature sf1 = new SequenceFeature("Cath", "", 2, 5, 0f, null);
store.add(sf1);
/*
* shift features right by 5
*/
- assertTrue(store.shiftFeatures(5));
+ assertTrue(store.shiftFeatures(0, 5));
// non-positional features untouched:
List<SequenceFeature> nonPos = store.getNonPositionalFeatures();
* feature at [7-10] should be removed
* feature at [13-19] should become [1-4]
*/
- assertTrue(store.shiftFeatures(-15));
+ assertTrue(store.shiftFeatures(0, -15));
pos = store.getPositionalFeatures();
assertEquals(pos.size(), 2);
SequenceFeatures.sortFeatures(pos, true);
assertEquals(pos.get(1).getBegin(), 13);
assertEquals(pos.get(1).getEnd(), 22);
assertEquals(pos.get(1).getType(), "Disulfide bond");
+
+ /*
+ * shift right by 4 from column 2
+ * feature at [1-4] should be unchanged
+ * feature at [13-22] should become [17-26]
+ */
+ assertTrue(store.shiftFeatures(2, 4));
+ pos = store.getPositionalFeatures();
+ assertEquals(pos.size(), 2);
+ SequenceFeatures.sortFeatures(pos, true);
+ assertEquals(pos.get(0).getBegin(), 1);
+ assertEquals(pos.get(0).getEnd(), 4);
+ assertEquals(pos.get(0).getType(), "Metal");
+ assertEquals(pos.get(1).getBegin(), 17);
+ assertEquals(pos.get(1).getEnd(), 26);
+ assertEquals(pos.get(1).getType(), "Disulfide bond");
+
+ /*
+ * shift right from column 18
+ * should be no updates
+ */
+ SequenceFeature f1 = pos.get(0);
+ SequenceFeature f2 = pos.get(1);
+ assertFalse(store.shiftFeatures(18, 6));
+ pos = store.getPositionalFeatures();
+ assertEquals(pos.size(), 2);
+ SequenceFeatures.sortFeatures(pos, true);
+ assertSame(pos.get(0), f1);
+ assertSame(pos.get(1), f2);
}
@Test(groups = "Functional")