X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fio%2FJSONFileTest.java;h=81d0ef7ac0b30f9b38f702ba1aef61975385569f;hb=14dfbaf6a266c6d5789f1f113b63a33a435ea0b2;hp=e0b050f6da21dbc2b03b0eb46d419e7fe28fc965;hpb=dc1ad37588e94cbc9ebbfaab2e9e49407f464310;p=jalview.git diff --git a/test/jalview/io/JSONFileTest.java b/test/jalview/io/JSONFileTest.java index e0b050f..81d0ef7 100644 --- a/test/jalview/io/JSONFileTest.java +++ b/test/jalview/io/JSONFileTest.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -27,14 +27,16 @@ import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; -import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; +import jalview.gui.JvOptionPane; import jalview.json.binding.biojson.v1.ColourSchemeMapper; import jalview.schemes.ColourSchemeI; +import jalview.schemes.ResidueColourScheme; import java.io.IOException; import java.util.ArrayList; @@ -44,6 +46,7 @@ import java.util.List; import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.AfterTest; +import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @@ -51,6 +54,13 @@ import org.testng.annotations.Test; public class JSONFileTest { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + private int TEST_SEQ_HEIGHT = 0; private int TEST_GRP_HEIGHT = 0; @@ -69,7 +79,7 @@ public class JSONFileTest private HashMap expectedGrps = new HashMap(); - private ColumnSelection expectedColSel = new ColumnSelection(); + private HiddenColumns expectedColSel = new HiddenColumns(); private SequenceI[] expectedHiddenSeqs = new SequenceI[1]; @@ -81,6 +91,8 @@ public class JSONFileTest private JSONFile jf; + private AlignExportSettingI exportSettings; + @BeforeTest(alwaysRun = true) public void setup() throws Exception { @@ -114,7 +126,7 @@ public class JSONFileTest for (Sequence seq : seqs) { - seq.setDatasetSequence(seq); + seq.createDatasetSequence(); expectedSeqs.put(seq.getName(), seq); } @@ -128,7 +140,7 @@ public class JSONFileTest null, true, true, false, 21, 29); ColourSchemeI scheme = ColourSchemeMapper.getJalviewColourScheme( "zappo", seqGrp); - seqGrp.cs = scheme; + seqGrp.cs.setColourScheme(scheme); seqGrp.setShowNonconserved(false); seqGrp.setDescription(null); @@ -182,9 +194,9 @@ public class JSONFileTest TEST_SEQ_HEIGHT = expectedSeqs.size(); TEST_GRP_HEIGHT = expectedGrps.size(); TEST_ANOT_HEIGHT = expectedAnnots.size(); - TEST_CS_HEIGHT = expectedColSel.getHiddenColumns().size(); + TEST_CS_HEIGHT = expectedColSel.getListOfCols().size(); - AlignExportSettingI exportSettings = new AlignExportSettingI() + exportSettings = new AlignExportSettingI() { @Override public boolean isExportHiddenSequences() @@ -227,11 +239,11 @@ public class JSONFileTest try { alignment = (Alignment) formatAdapter.readFile(TEST_JSON_FILE, - AppletFormatAdapter.FILE, JSONFile.FILE_DESC); + DataSourceType.FILE, FileFormat.Json); jf = (JSONFile) formatAdapter.getAlignFile(); AlignFrame af = new AlignFrame(alignment, jf.getHiddenSequences(), - jf.getColumnSelection(), AlignFrame.DEFAULT_WIDTH, + jf.getHiddenColumns(), AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); af.getViewport().setShowSequenceFeatures(jf.isShowSeqFeatures()); String colourSchemeName = jf.getGlobalColourScheme(); @@ -241,12 +253,12 @@ public class JSONFileTest af.getViewport().setFeaturesDisplayed(jf.getDisplayedFeatures()); formatAdapter = new AppletFormatAdapter(af.alignPanel, exportSettings); - String jsonOutput = formatAdapter.formatSequences(JSONFile.FILE_DESC, + String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, af.alignPanel.getAlignment(), false); formatAdapter = new AppletFormatAdapter(); testAlignment = formatAdapter.readFile(jsonOutput, - AppletFormatAdapter.PASTE, JSONFile.FILE_DESC); + DataSourceType.PASTE, FileFormat.Json); testJsonFile = (JSONFile) formatAdapter.getAlignFile(); // System.out.println(jsonOutput); } catch (IOException e) @@ -262,7 +274,7 @@ public class JSONFileTest passedCount = 0; } - @AfterTest + @AfterTest(alwaysRun = true) public void tearDown() throws Exception { testJsonFile = null; @@ -300,12 +312,13 @@ public class JSONFileTest @Test(groups = { "Functional" }) public void hiddenColsTest() { - ColumnSelection cs = testJsonFile.getColumnSelection(); + HiddenColumns cs = testJsonFile.getHiddenColumns(); Assert.assertNotNull(cs); - Assert.assertNotNull(cs.getHiddenColumns()); - List hiddenCols = cs.getHiddenColumns(); + Assert.assertNotNull(cs.getListOfCols()); + List hiddenCols = cs.getListOfCols(); Assert.assertEquals(hiddenCols.size(), TEST_CS_HEIGHT); - Assert.assertEquals(hiddenCols, expectedColSel.getHiddenColumns(), + Assert.assertEquals(hiddenCols.get(0), expectedColSel + .getListOfCols().get(0), "Mismatched hidden columns!"); } @@ -314,7 +327,8 @@ public class JSONFileTest { Assert.assertNotNull(testJsonFile.getHiddenSequences(), "Hidden sequence Expected but found Null"); - Assert.assertEquals(jf.getHiddenSequences().length, 1, "Hidden sequece"); + Assert.assertEquals(jf.getHiddenSequences().length, 1, + "Hidden sequence"); } @Test(groups = { "Functional" }) @@ -324,9 +338,50 @@ public class JSONFileTest "Colourscheme is null, parsing failed!"); Assert.assertEquals(testJsonFile.getGlobalColourScheme(), "Zappo", "Zappo colour scheme expected!"); - // Assert.assertTrue( - // testJsonFile.getGlobalColourScheme() instanceof ZappoColourScheme, - // "Zappo colour scheme expected!"); + } + + @Test(groups = { "Functional" }) + /** + * Test for bug JAL-2489, NPE when exporting BioJSON with global colour scheme set as 'None' + */ + public void testBioJSONRoundTripWithGlobalColourSchemeSetAsNone() + { + AppletFormatAdapter formatAdapter = new AppletFormatAdapter(); + + Alignment _alignment; + try + { + // load example BioJSON file + _alignment = (Alignment) formatAdapter.readFile(TEST_JSON_FILE, + DataSourceType.FILE, FileFormat.Json); + JSONFile bioJsonFile = (JSONFile) formatAdapter.getAlignFile(); + AlignFrame alignFrame = new AlignFrame(_alignment, + bioJsonFile.getHiddenSequences(), + bioJsonFile.getColumnSelection(), AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + // Change colour scheme to 'None' and perform round trip + ColourSchemeI cs = ColourSchemeMapper.getJalviewColourScheme( + ResidueColourScheme.NONE, _alignment); + alignFrame.changeColour(cs); + alignFrame.getViewport().setFeaturesDisplayed( + bioJsonFile.getDisplayedFeatures()); + formatAdapter = new AppletFormatAdapter(alignFrame.alignPanel, + exportSettings); + // export BioJSON string + String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, + alignFrame.alignPanel.getAlignment(), false); + // read back Alignment from BioJSON string + formatAdapter = new AppletFormatAdapter(); + formatAdapter.readFile(jsonOutput, DataSourceType.PASTE, + FileFormat.Json); + // assert 'None' colour scheme is retained after round trip + JSONFile _bioJsonFile = (JSONFile) formatAdapter.getAlignFile(); + Assert.assertEquals(_bioJsonFile.getGlobalColourScheme(), + ResidueColourScheme.NONE); + } catch (IOException e) + { + e.printStackTrace(); + } } @Test(groups = { "Functional" })