package jalview.analysis;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
+
import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-import org.junit.Test;
+import org.testng.annotations.Test;
public class CrossRefTest
{
-
- /**
- * Tests for the method that checks if one sequence cross-references another
- */
@Test
- public void testHasCrossRef()
+ public void testFindXDbRefs()
{
- assertFalse(CrossRef.hasCrossRef(null, null));
- SequenceI seq1 = new Sequence("EMBL|A12345", "ABCDEF");
- assertFalse(CrossRef.hasCrossRef(seq1, null));
- assertFalse(CrossRef.hasCrossRef(null, seq1));
- SequenceI seq2 = new Sequence("UNIPROT|V20192", "ABCDEF");
- assertFalse(CrossRef.hasCrossRef(seq1, seq2));
-
- // different ref
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "v20193"));
- assertFalse(CrossRef.hasCrossRef(seq1, seq2));
-
- // case-insensitive; version number is ignored
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "v20192"));
- assertTrue(CrossRef.hasCrossRef(seq1, seq2));
-
- // right case!
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
- assertTrue(CrossRef.hasCrossRef(seq1, seq2));
- // test is one-way only
- assertFalse(CrossRef.hasCrossRef(seq2, seq1));
+ DBRefEntry ref1 = new DBRefEntry("UNIPROT", "1", "A123");
+ DBRefEntry ref2 = new DBRefEntry("UNIPROTKB/TREMBL", "1", "A123");
+ DBRefEntry ref3 = new DBRefEntry("pdb", "1", "A123");
+ DBRefEntry ref4 = new DBRefEntry("EMBLCDSPROTEIN", "1", "A123");
+ DBRefEntry ref5 = new DBRefEntry("embl", "1", "A123");
+ DBRefEntry ref6 = new DBRefEntry("emblCDS", "1", "A123");
+ DBRefEntry ref7 = new DBRefEntry("GeneDB", "1", "A123");
+ DBRefEntry ref8 = new DBRefEntry("PFAM", "1", "A123");
+ DBRefEntry[] refs = new DBRefEntry[]
+ { ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8 };
+
+ /*
+ * Just the DNA refs:
+ */
+ DBRefEntry[] found = CrossRef.findXDbRefs(false, refs);
+ assertEquals(3, found.length);
+ assertSame(ref5, found[0]);
+ assertSame(ref6, found[1]);
+ assertSame(ref7, found[2]);
+
+ /*
+ * Just the protein refs:
+ */
+ found = CrossRef.findXDbRefs(true, refs);
+ assertEquals(4, found.length);
+ assertSame(ref1, found[0]);
+ assertSame(ref2, found[1]);
+ assertSame(ref3, found[2]);
+ assertSame(ref4, found[3]);
}
- /**
- * Tests for the method that checks if either sequence cross-references the
- * other
- */
- @Test
- public void testHaveCrossRef()
- {
- assertFalse(CrossRef.hasCrossRef(null, null));
- SequenceI seq1 = new Sequence("EMBL|A12345", "ABCDEF");
- assertFalse(CrossRef.haveCrossRef(seq1, null));
- assertFalse(CrossRef.haveCrossRef(null, seq1));
- SequenceI seq2 = new Sequence("UNIPROT|V20192", "ABCDEF");
- assertFalse(CrossRef.haveCrossRef(seq1, seq2));
-
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
- assertTrue(CrossRef.haveCrossRef(seq1, seq2));
- // next is true for haveCrossRef, false for hasCrossRef
- assertTrue(CrossRef.haveCrossRef(seq2, seq1));
-
- // now the other way round
- seq1.setDBRef(null);
- seq2.addDBRef(new DBRefEntry("EMBL", "1", "A12345"));
- assertTrue(CrossRef.haveCrossRef(seq1, seq2));
- assertTrue(CrossRef.haveCrossRef(seq2, seq1));
-
- // now both ways
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "V20192"));
- assertTrue(CrossRef.haveCrossRef(seq1, seq2));
- assertTrue(CrossRef.haveCrossRef(seq2, seq1));
- }
}