+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2)
+ * Copyright (C) 2015 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
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()
+ @Test(groups = { "Functional" })
+ 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));
+ 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 };
- // different ref
- seq1.addDBRef(new DBRefEntry("UNIPROT", "1", "v20193"));
- assertFalse(CrossRef.hasCrossRef(seq1, seq2));
+ /*
+ * 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]);
- // 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));
+ /*
+ * 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));
- }
}