X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fext%2Fjmol%2FJmolCommandsTest.java;h=c0bb62996d6d8e7d29cd713006e77eed0c6e4a33;hb=8a43b8353b89a47002ef17c959ed61281fc4d826;hp=21f7e19bf5715e8677a5280aec7a95cab2b5d6b6;hpb=91cf2210f6440d85c8a488c1bd18b0d3feb93f19;p=jalview.git diff --git a/test/jalview/ext/jmol/JmolCommandsTest.java b/test/jalview/ext/jmol/JmolCommandsTest.java index 21f7e19..c0bb629 100644 --- a/test/jalview/ext/jmol/JmolCommandsTest.java +++ b/test/jalview/ext/jmol/JmolCommandsTest.java @@ -55,7 +55,10 @@ public class JmolCommandsTest testee = new JmolCommands(); } - @Test(groups = { "Functional" }) + /** + * Test for the now deprecated version of getColourBySequenceCommand + */ + @Test(groups = { "Functional" }, enabled = false) public void testGetColourBySequenceCommands_hiddenColumns() { /* @@ -93,16 +96,15 @@ public class JmolCommandsTest "B", map, null); ssm.addStructureMapping(sm2); - String[] commands = testee.colourBySequence(ssm, - files, - seqs, sr, af.alignPanel); + String[] commands = testee.colourBySequence(ssm, files, seqs, + sr, + af.alignPanel); assertEquals(commands.length, 2); String chainACommand = commands[0]; // M colour is #82827d == (130, 130, 125) (see strand.html help page) assertTrue( - chainACommand.contains("select 21:A/1.1;color[130,130,125]")); // first - // one + chainACommand.contains("select 21:A/1.1;color[130,130,125]")); // first one // H colour is #60609f == (96, 96, 159) assertTrue(chainACommand.contains(";select 22:A/1.1;color[96,96,159]")); // hidden columns are Gray (128, 128, 128) @@ -126,40 +128,65 @@ public class JmolCommandsTest chainBCommand.contains(";select 26-30:B/2.1;color[73,73,182]")); } - @Test(groups = "Functional") + @Test(groups = { "Functional" }) public void testGetAtomSpec() { AtomSpecModel model = new AtomSpecModel(); assertEquals(testee.getAtomSpec(model, false), ""); - model.addRange("1", 2, 4, "A"); - assertEquals(testee.getAtomSpec(model, false), "2-4:A/1.1"); - model.addRange("1", 8, 8, "A"); - assertEquals(testee.getAtomSpec(model, false), "2-4:A/1.1|8:A/1.1"); - model.addRange("1", 5, 7, "B"); - assertEquals(testee.getAtomSpec(model, false), - "2-4:A/1.1|8:A/1.1|5-7:B/1.1"); - model.addRange("1", 3, 5, "A"); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-7:B/1.1"); - model.addRange("2", 1, 4, "B"); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1"); - model.addRange("2", 5, 9, "C"); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-7:B/1.1|1-4:B/2.1|5-9:C/2.1"); - model.addRange("1", 8, 10, "B"); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1"); - model.addRange("1", 8, 9, "B"); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|5-9:C/2.1"); - model.addRange("2", 3, 10, "C"); // subsumes 5-9 - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|3-10:C/2.1"); - model.addRange("5", 25, 35, " "); - assertEquals(testee.getAtomSpec(model, false), - "2-5:A/1.1|8:A/1.1|5-10:B/1.1|1-4:B/2.1|3-10:C/2.1|25-35:/5.1"); + /* + * Jalview numbers models from 0, Jmol from 1 + */ + model.addRange("2", 2, 4, "A"); + assertEquals(testee.getAtomSpec(model, false), "2-4:A/2.1"); + + model.addRange("2", 8, 8, "A"); + assertEquals(testee.getAtomSpec(model, false), "(2-4,8)&:A/2.1"); + + model.addRange("2", 5, 7, "B"); + assertEquals(testee.getAtomSpec(model, + false), + "(2-4,8)&:A/2.1,5-7:B/2.1"); + + model.addRange("2", 3, 5, "A"); + // 3-5 merges with 2-4 to make 2-5: + assertEquals(testee.getAtomSpec(model, + false), + "(2-5,8)&:A/2.1,5-7:B/2.1"); + + model.addRange("1", 1, 4, "B"); + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,(2-5,8)&:A/2.1,5-7:B/2.1"); + + model.addRange("1", 5, 9, "C"); + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-7:B/2.1"); + + model.addRange("2", 8, 10, "B"); + // 8-10 extends 5-7 to make 5-10 + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1"); + + model.addRange("2", 8, 9, "B"); + // subsumed by 5-10 so makes no difference + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,5-9:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1"); + + model.addRange("1", 3, 10, "C"); + // subsumes 5-9 so replaces it + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,3-10:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1"); + + // empty chain code - e.g. from homology modelling + model.addRange("6", 25, 35, " "); + assertEquals(testee.getAtomSpec(model, + false), + "1-4:B/1.1,3-10:C/1.1,(2-5,8)&:A/2.1,5-10:B/2.1,25-35:/6.1"); } @Test(groups = { "Functional" }) @@ -180,8 +207,8 @@ public class JmolCommandsTest // they were added; within colour, by model, by chain, ranges in start order List commands = testee.colourBySequence(map); assertEquals(commands.size(), 1); - String expected1 = "select 2-5:A/1.1|9-23:A/1.1|7:B/1.1|1:A/2.1|4-7:B/2.1;color[0,0,255]"; - String expected2 = "select 3-5:A/2.1|8:A/2.1;color[255,255,0]"; + String expected1 = "select (2-5,9-23)&:A/1.1,7:B/1.1,1:A/2.1,4-7:B/2.1;color[0,0,255]"; + String expected2 = "select (3-5,8)&:A/2.1;color[255,255,0]"; String expected3 = "select 3-9:A/1.1;color[255,0,0]"; assertEquals(commands.get(0).getCommand(), expected1 + ";" + expected2 + ";" + expected3); @@ -201,8 +228,8 @@ public class JmolCommandsTest List command = testee.superposeStructures(ref, toAlign); assertEquals(command.size(), 1); - String refSpec = "12-14:A/1.1|18:B/1.1|22-23:B/1.1"; - String toAlignSpec = "15-17:B/2.1|20-21:B/2.1|22:C/2.1"; + String refSpec = "12-14:A/1.1,(18,22-23)&:B/1.1"; + String toAlignSpec = "(15-17,20-21)&:B/2.1,22:C/2.1"; String expected = String.format( "compare {2.1} {1.1} SUBSET {(*.CA | *.P) and conformation=1} ATOMS {%s}{%s} ROTATE TRANSLATE ;select %s|%s;cartoons", toAlignSpec, refSpec, toAlignSpec, refSpec);