X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FDBRefEntryTest.java;h=ae6dcdafa92140adc317b9c11b85360b5626e78c;hb=bee12714a66f2586e674ca2470efb6d8de79df58;hp=f00cb386433df944ee50b7defaecdb86b31d06a0;hpb=ab22918ab8fc67d30dad1fb1ae0f37e51f49df95;p=jalview.git diff --git a/test/jalview/datamodel/DBRefEntryTest.java b/test/jalview/datamodel/DBRefEntryTest.java index f00cb38..ae6dcda 100644 --- a/test/jalview/datamodel/DBRefEntryTest.java +++ b/test/jalview/datamodel/DBRefEntryTest.java @@ -1,6 +1,28 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel; +import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; import jalview.util.MapList; @@ -13,7 +35,7 @@ public class DBRefEntryTest /** * Tests for the method that compares equality of reference (but not mapping) */ - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) public void testEqualRef() { DBRefEntry ref1 = new DBRefEntry("UNIPROT", "1", "V71633"); @@ -31,15 +53,89 @@ public class DBRefEntryTest assertFalse(ref1.equalRef(new DBRefEntry("UNIPROT", "1", "V71632"))); // presence of or differences in mappings are ignored - ref1.setMap(new Mapping(new MapList(new int[] - { 1, 3 }, new int[] - { 1, 1 }, 3, 1))); + ref1.setMap(new Mapping(new MapList(new int[] { 1, 3 }, new int[] { 1, + 1 }, 3, 1))); assertTrue(ref1.equalRef(ref2)); assertTrue(ref2.equalRef(ref1)); - ref1.setMap(new Mapping(new MapList(new int[] - { 1, 6 }, new int[] - { 1, 2 }, 3, 1))); + ref1.setMap(new Mapping(new MapList(new int[] { 1, 6 }, new int[] { 1, + 2 }, 3, 1))); assertTrue(ref1.equalRef(ref2)); assertTrue(ref2.equalRef(ref1)); } + + /** + * Tests for the method that may update a DBRefEntry from another with a + * mapping or 'real' version + */ + @Test(groups = { "Functional" }) + public void testUpdateFrom() + { + DBRefEntry ref1 = new DBRefEntry("UNIPROT", "1", "V71633"); + + assertFalse(ref1.updateFrom(null)); + + /* + * equivalent other dbref + */ + DBRefEntry ref2 = new DBRefEntry("uniprot", "1", "v71633"); + assertTrue(ref1.updateFrom(ref2)); + assertEquals("UNIPROT", ref1.getSource()); // unchanged + assertEquals("V71633", ref1.getAccessionId()); // unchanged + + /* + * ref1 has no mapping, acquires mapping from ref2 + */ + Mapping map = new Mapping(new MapList(new int[] { 1, 3 }, new int[] { + 1, 1 }, 3, 1)); + ref2.setMap(map); + assertTrue(ref1.updateFrom(ref2)); + assertSame(map, ref1.getMap()); // null mapping updated + + /* + * ref1 has a mapping, does not acquire mapping from ref2 + */ + ref2.setMap(new Mapping(map)); + assertTrue(ref1.updateFrom(ref2)); + assertSame(map, ref1.getMap()); // non-null mapping not updated + + /* + * ref2 has a different source, accession or version + */ + ref2.setSource("pdb"); + assertFalse(ref1.updateFrom(ref2)); + ref2.setSource(ref1.getSource()); + ref2.setAccessionId("P12345"); + assertFalse(ref1.updateFrom(ref2)); + ref2.setAccessionId(ref1.getAccessionId()); + ref1.setVersion("2"); + assertFalse(ref1.updateFrom(ref2)); + + /* + * a non-null version supersedes "0" or "source:0" + */ + ref2.setVersion(null); + assertFalse(ref1.updateFrom(ref2)); + assertEquals("2", ref1.getVersion()); + ref2.setVersion("3"); + ref1.setVersion("0"); + assertTrue(ref1.updateFrom(ref2)); + assertEquals("3", ref1.getVersion()); + ref1.setVersion("UNIPROT:0"); + assertTrue(ref1.updateFrom(ref2)); + assertEquals("3", ref1.getVersion()); + + /* + * version "source:n" with n>0 is not superseded + */ + ref1.setVersion("UNIPROT:1"); + assertFalse(ref1.updateFrom(ref2)); + assertEquals("UNIPROT:1", ref1.getVersion()); + + /* + * version "10" is not superseded + */ + ref1.setVersion("10"); + assertFalse(ref1.updateFrom(ref2)); + assertEquals("10", ref1.getVersion()); + } }