From b0f4592db27d141ce0781fd050ca52db30274868 Mon Sep 17 00:00:00 2001 From: Gemma Guest <gemma.guest@stfc.ac.uk> Date: Thu, 26 Mar 2020 16:54:04 +0000 Subject: [PATCH] Improve batch decoder tests The original test json string contained largely default/empty values so it is hard to tell whether they are really being loaded. Add a new string containing fully populated values as well as an "empty" batch representation containing defaults. Use these for the main window containing two batches. Add a new unit test to test the case where the instrument has changed. Re #28429 --- .../ISISReflectometry/Common/DecoderTest.h | 515 ++++++++++++++---- 1 file changed, 409 insertions(+), 106 deletions(-) diff --git a/qt/scientific_interfaces/test/ISISReflectometry/Common/DecoderTest.h b/qt/scientific_interfaces/test/ISISReflectometry/Common/DecoderTest.h index 00e15f9287a..858234a8e24 100644 --- a/qt/scientific_interfaces/test/ISISReflectometry/Common/DecoderTest.h +++ b/qt/scientific_interfaces/test/ISISReflectometry/Common/DecoderTest.h @@ -19,112 +19,387 @@ #include <QVariant> namespace { -const static QString MAINWINDOW_JSON_STRING{ - "{\"batches\": [{\"saveView\": {\"commaRadioButton\": true, " - "\"spaceRadioButton\": false, \"regexCheckBox\": false, \"savePathEdit\": " - "\"\", \"saveReductionResultsCheckBox\": false, \"titleCheckBox\": false, " - "\"filterEdit\": \"\", \"tabRadioButton\": false, \"prefixEdit\": \"\", " - "\"qResolutionCheckBox\": false, \"fileFormatComboBox\": 0}, \"runsView\": " - "{\"comboSearchInstrument\": 0, \"runsTable\": {\"projectSave\": true, " - "\"filterBox\": \"\", \"runsTableModel\": [{\"rows\": " - "[{\"reductionWorkspaces\": {\"inputRunNumbers\": [\"13460\"], \"iVsQ\": " - "\"\", \"transPair\": {\"firstTransRuns\": [], \"secondTransRuns\": []}, " - "\"iVsLambda\": \"\", \"iVsQBinned\": \"\"}, \"transRunNums\": " - "{\"firstTransRuns\": [], \"secondTransRuns\": []}, " - "\"scaleFactorPresent\": " - "false, \"qRangeOutput\": {\"maxPresent\": false, \"stepPresent\": false, " - "\"minPresent\": false}, \"reductionOptions\": {}, \"theta\": 0.5, " - "\"runNumbers\": [\"13460\"], \"qRange\": {\"maxPresent\": false, " - "\"stepPresent\": false, \"minPresent\": false}}], \"name\": \"123\", " - "\"postprocessedWorkspaceName\": \"\"}]}, \"textSearch\": \"123\"}, " - "\"eventView\": {\"disabledSlicingButton\": true, \"customEdit\": \"\", " - "\"logValueButton\": false, \"logValueEdit\": \"\", \"uniformEvenButton\": " - "false, \"logValueTypeEdit\": \"\", \"uniformButton\": false, " - "\"uniformEdit\": 1.0, \"customButton\": false, \"uniformEvenEdit\": 1}, " - "\"experimentView\": {\"perAngleDefaults\": {\"columnsNum\": 9, \"rows\": " - "[[\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]], \"rowsNum\": " - "1}, " - "\"startOverlapEdit\": 10.0, \"analysisModeComboBox\": 0, " - "\"reductionTypeComboBox\": 0, \"stitchEdit\": \"\", " - "\"floodWorkspaceWsSelector\": 0, \"includePartialBinsCheckBox\": false, " - "\"summationTypeComboBox\": 0, \"transScaleRHSCheckBox\": true, " - "\"debugCheckbox\": false, \"transStitchParamsEdit\": \"\", " - "\"floodCorComboBox\": 0, \"endOverlapEdit\": 12.0, \"polCorrCheckBox\": " - "false}, \"instrumentView\": {\"monBgMaxEdit\": 18.0, \"I0MonitorIndex\": " - "2, " - "\"lamMinEdit\": 1.5, \"monIntMinEdit\": 4.0, \"intMonCheckBox\": true, " - "\"monIntMaxEdit\": 10.0, \"detectorCorrectionTypeComboBox\": 0, " - "\"correctDetectorsCheckBox\": true, \"lamMaxEdit\": 17.0, " - "\"monBgMinEdit\": " - "17.0}}, {\"saveView\": {\"commaRadioButton\": true, \"spaceRadioButton\": " - "false, \"regexCheckBox\": false, \"savePathEdit\": \"\", " - "\"saveReductionResultsCheckBox\": false, \"titleCheckBox\": false, " - "\"filterEdit\": \"\", \"tabRadioButton\": false, \"prefixEdit\": \"\", " - "\"qResolutionCheckBox\": false, \"fileFormatComboBox\": 0}, \"runsView\": " - "{\"comboSearchInstrument\": 0, \"runsTable\": {\"projectSave\": true, " - "\"filterBox\": \"\", \"runsTableModel\": [{\"rows\": [{}], \"name\": " - "\"HiddenGroupName1\", \"postprocessedWorkspaceName\": \"\"}]}, " - "\"textSearch\": \"\"}, \"eventView\": {\"disabledSlicingButton\": true, " - "\"customEdit\": \"\", \"logValueButton\": false, \"logValueEdit\": \"\", " - "\"uniformEvenButton\": false, \"logValueTypeEdit\": \"\", " - "\"uniformButton\": false, \"uniformEdit\": 1.0, \"customButton\": false, " - "\"uniformEvenEdit\": 1}, \"experimentView\": {\"perAngleDefaults\": " - "{\"columnsNum\": 9, \"rows\": [[\"\", \"\", \"\", \"\", \"\", \"\", \"\", " - "\"\", \"\"]], \"rowsNum\": 1}, \"startOverlapEdit\": 10.0, " - "\"analysisModeComboBox\": 0, \"reductionTypeComboBox\": 0, " - "\"stitchEdit\": " - "\"\", \"floodWorkspaceWsSelector\": 0, \"includePartialBinsCheckBox\": " - "false, \"summationTypeComboBox\": 0, \"transScaleRHSCheckBox\": true, " - "\"debugCheckbox\": false, \"transStitchParamsEdit\": \"\", " - "\"floodCorComboBox\": 0, \"endOverlapEdit\": 12.0, \"polCorrCheckBox\": " - "false}, \"instrumentView\": {\"monBgMaxEdit\": 18.0, \"I0MonitorIndex\": " - "2, " - "\"lamMinEdit\": 1.5, \"monIntMinEdit\": 4.0, \"intMonCheckBox\": true, " - "\"monIntMaxEdit\": 10.0, \"detectorCorrectionTypeComboBox\": 0, " - "\"correctDetectorsCheckBox\": true, \"lamMaxEdit\": 17.0, " - "\"monBgMinEdit\": " - "17.0}}], \"tag\": \"ISIS Reflectometry\"}"}; - const static QString BATCH_JSON_STRING{ - "{\"eventView\":{\"customButton\":false,\"customEdit\":\"\", " - "\"disabledSlicingButton\":false,\"logValueButton\":false," - "\"logValueEdit\":" - "\"\",\"logValueTypeEdit\":\"\",\"uniformButton\":true,\"uniformEdit\":3," - "\"uniformEvenButton\":false,\"uniformEvenEdit\":2},\"experimentView\":{" - "\"analysisModeComboBox\":1,\"debugCheckbox\":true,\"endOverlapEdit\":13," - "\"floodCorComboBox\":1,\"floodWorkspaceWsSelector\":0," - "\"includePartialBinsCheckBox\":true,\"perAngleDefaults\":{" - "\"columnsNum\":" - "9,\"rows\":[[\"123\",\"123\",\"213\",\"123\",\"123\",\"123\",\"123\"," - "\"123\",\"123\"]],\"rowsNum\":1},\"polCorrCheckBox\":false," - "\"reductionTypeComboBox\":2,\"startOverlapEdit\":12,\"stitchEdit\":\"\"," - "\"summationTypeComboBox\":1,\"transScaleRHSCheckBox\":true," - "\"transStitchParamsEdit\":\"1\"},\"instrumentView\":{\"I0MonitorIndex\":" - "3," - "\"correctDetectorsCheckBox\":false,\"detectorCorrectionTypeComboBox\":1," - "\"intMonCheckBox\":false,\"lamMaxEdit\":18,\"lamMinEdit\":2.5," - "\"monBgMaxEdit\":20,\"monBgMinEdit\":19,\"monIntMaxEdit\":11," - "\"monIntMinEdit\":5},\"runsView\":{\"comboSearchInstrument\":0," - "\"runsTable\":{\"filterBox\":\"123\",\"projectSave\":false," - "\"runsTableModel\":[{\"name\":\"123\",\"postprocessedWorkspaceName\":" - "\"\"," - "\"rows\":[{\"qRange\":{\"max\":0.1,\"maxPresent\":true,\"min\":0.1," - "\"minPresent\":true,\"step\":0.1,\"stepPresent\":true},\"qRangeOutput\":" "{" - "\"maxPresent\":false,\"minPresent\":false,\"stepPresent\":false}," - "\"reductionOptions\":{\"ProcessingInstructions\":\"1-4\"}," - "\"reductionWorkspaces\":{\"iVsLambda\":\"\",\"iVsQ\":\"\"," - "\"iVsQBinned\":" - "\"\",\"inputRunNumbers\":[\"13460\"],\"transPair\":{\"firstTransRuns\":[" - "\"123\"],\"secondTransRuns\":[\"1234\"]}},\"runNumbers\":[\"13460\"]," - "\"scaleFactor\":2,\"scaleFactorPresent\":true,\"theta\":0.5," - "\"transRunNums\":{\"firstTransRuns\":[\"123\"],\"secondTransRuns\":[" - "\"1234\"]}}]}]},\"textSearch\":\"1120015\"},\"saveView\":{" - "\"commaRadioButton\":false,\"fileFormatComboBox\":1,\"filterEdit\":" - "\"123\",\"prefixEdit\":\"123\",\"qResolutionCheckBox\":true," - "\"regexCheckBox\":true,\"savePathEdit\":\"123\"," - "\"saveReductionResultsCheckBox\":false,\"spaceRadioButton\":true," - "\"tabRadioButton\":false,\"titleCheckBox\":true}}"}; + " \"eventView\": {" + " \"customButton\": false," + " \"customEdit\": \"\"," + " \"disabledSlicingButton\": false," + " \"logValueButton\": false," + " \"logValueEdit\": \"\"," + " \"logValueTypeEdit\": \"\"," + " \"uniformButton\": false," + " \"uniformEdit\": 1," + " \"uniformEvenButton\": true," + " \"uniformEvenEdit\": 2" + " }," + " \"experimentView\": {" + " \"analysisModeComboBox\": 1," + " \"debugCheckbox\": true," + " \"endOverlapEdit\": 13," + " \"floodCorComboBox\": 1," + " \"floodWorkspaceWsSelector\": 0," + " \"includePartialBinsCheckBox\": true," + " \"perAngleDefaults\": {" + " \"columnsNum\": 9," + " \"rows\": [" + " [" + " \"0.5\"," + " \"13463\"," + " \"13464\"," + " \"4\"," + " \"0.01\"," + " \"0.1\"," + " \"0.02\"," + " \"\"," + " \"4\"" + " ]" + " ]," + " \"rowsNum\": 1" + " }," + " \"polCorrCheckBox\": false," + " \"reductionTypeComboBox\": 2," + " \"startOverlapEdit\": 8," + " \"stitchEdit\": \"Params=0.015\"," + " \"summationTypeComboBox\": 1," + " \"transScaleRHSCheckBox\": false," + " \"transStitchParamsEdit\": \"0.03\"" + " }," + " \"instrumentView\": {" + " \"I0MonitorIndex\": 1," + " \"correctDetectorsCheckBox\": true," + " \"detectorCorrectionTypeComboBox\": 1," + " \"intMonCheckBox\": true," + " \"lamMaxEdit\": 16," + " \"lamMinEdit\": 2.5," + " \"monBgMaxEdit\": 19," + " \"monBgMinEdit\": 14," + " \"monIntMaxEdit\": 11," + " \"monIntMinEdit\": 3" + " }," + " \"runsView\": {" + " \"comboSearchInstrument\": 0," + " \"runsTable\": {" + " \"filterBox\": \"\"," + " \"projectSave\": false," + " \"runsTableModel\": [" + " {" + " \"itemState\": 0," + " \"name\": \"Si/D2O S2 \"," + " \"postprocessedWorkspaceName\": \"\"," + " \"rows\": [" + " {" + " \"itemState\": 0," + " \"qRange\": {" + " \"max\": 0.06," + " \"maxPresent\": true," + " \"min\": 0.01," + " \"minPresent\": true," + " \"step\": 0.04," + " \"stepPresent\": true" + " }," + " \"qRangeOutput\": {" + " \"maxPresent\": false," + " \"minPresent\": false," + " \"stepPresent\": false" + " }," + " \"reductionOptions\": {" + " }," + " \"reductionWorkspaces\": {" + " \"iVsLambda\": \"\"," + " \"iVsQ\": \"\"," + " \"iVsQBinned\": \"\"," + " \"inputRunNumbers\": [" + " \"13460\"" + " ]," + " \"transPair\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " \"runNumbers\": [" + " \"13460\"" + " ]," + " \"scaleFactorPresent\": false," + " \"theta\": 0.5," + " \"transRunNums\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " {" + " \"itemState\": 0," + " \"qRange\": {" + " \"max\": 0.3," + " \"maxPresent\": true," + " \"min\": 0.035," + " \"minPresent\": true," + " \"step\": 0.04," + " \"stepPresent\": true" + " }," + " \"qRangeOutput\": {" + " \"maxPresent\": false," + " \"minPresent\": false," + " \"stepPresent\": false" + " }," + " \"reductionOptions\": {" + " }," + " \"reductionWorkspaces\": {" + " \"iVsLambda\": \"\"," + " \"iVsQ\": \"\"," + " \"iVsQBinned\": \"\"," + " \"inputRunNumbers\": [" + " \"13462\"" + " ]," + " \"transPair\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " \"runNumbers\": [" + " \"13462\"" + " ]," + " \"scaleFactorPresent\": false," + " \"theta\": 2.3," + " \"transRunNums\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }" + " ]" + " }," + " {" + " \"itemState\": 0," + " \"name\": \"Si MAB 500mg/L NaOAc D2O \"," + " \"postprocessedWorkspaceName\": \"\"," + " \"rows\": [" + " {" + " \"itemState\": 0," + " \"qRange\": {" + " \"max\": 0.06," + " \"maxPresent\": true," + " \"min\": 0.01," + " \"minPresent\": true," + " \"step\": 0.04," + " \"stepPresent\": true" + " }," + " \"qRangeOutput\": {" + " \"maxPresent\": false," + " \"minPresent\": false," + " \"stepPresent\": false" + " }," + " \"reductionOptions\": {" + " }," + " \"reductionWorkspaces\": {" + " \"iVsLambda\": \"\"," + " \"iVsQ\": \"\"," + " \"iVsQBinned\": \"\"," + " \"inputRunNumbers\": [" + " \"13469\"" + " ]," + " \"transPair\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " \"runNumbers\": [" + " \"13469\"" + " ]," + " \"scaleFactorPresent\": false," + " \"theta\": 0.7," + " \"transRunNums\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " {" + " \"itemState\": 0," + " \"qRange\": {" + " \"max\": 0.3," + " \"maxPresent\": true," + " \"min\": 0.035," + " \"minPresent\": true," + " \"step\": 0.04," + " \"stepPresent\": true" + " }," + " \"qRangeOutput\": {" + " \"maxPresent\": false," + " \"minPresent\": false," + " \"stepPresent\": false" + " }," + " \"reductionOptions\": {" + " }," + " \"reductionWorkspaces\": {" + " \"iVsLambda\": \"\"," + " \"iVsQ\": \"\"," + " \"iVsQBinned\": \"\"," + " \"inputRunNumbers\": [" + " \"13470\"" + " ]," + " \"transPair\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }," + " \"runNumbers\": [" + " \"13470\"" + " ]," + " \"scaleFactorPresent\": false," + " \"theta\": 2.3," + " \"transRunNums\": {" + " \"firstTransRuns\": [" + " \"13463\"" + " ]," + " \"secondTransRuns\": [" + " \"13464\"" + " ]" + " }" + " }" + " ]" + " }" + " ]" + " }," + " \"textSearch\": \"1120015\"" + " }," + " \"saveView\": {" + " \"commaRadioButton\": false," + " \"fileFormatComboBox\": 1," + " \"filterEdit\": \"IvsQ\"," + " \"prefixEdit\": \"\"," + " \"qResolutionCheckBox\": true," + " \"regexCheckBox\": true," + " \"savePathEdit\": \"\"," + " \"saveReductionResultsCheckBox\": false," + " \"spaceRadioButton\": true," + " \"tabRadioButton\": false," + " \"titleCheckBox\": true" + " }" + "}"}; + +const static QString EMPTY_BATCH_JSON_STRING{ + "{" + " \"eventView\": {" + " \"customButton\": false," + " \"customEdit\": \"\"," + " \"disabledSlicingButton\": true," + " \"logValueButton\": false," + " \"logValueEdit\": \"\"," + " \"logValueTypeEdit\": \"\"," + " \"uniformButton\": false," + " \"uniformEdit\": 1," + " \"uniformEvenButton\": false," + " \"uniformEvenEdit\": 1" + " }," + " \"experimentView\": {" + " \"analysisModeComboBox\": 0," + " \"debugCheckbox\": false," + " \"endOverlapEdit\": 12," + " \"floodCorComboBox\": 0," + " \"floodWorkspaceWsSelector\": 0," + " \"includePartialBinsCheckBox\": false," + " \"perAngleDefaults\": {" + " \"columnsNum\": 9," + " \"rows\": [" + " [" + " \"\"," + " \"\"," + " \"\"," + " \"\"," + " \"\"," + " \"\"," + " \"\"," + " \"\"," + " \"\"" + " ]" + " ]," + " \"rowsNum\": 1" + " }," + " \"polCorrCheckBox\": false," + " \"reductionTypeComboBox\": 0," + " \"startOverlapEdit\": 10," + " \"stitchEdit\": \"\"," + " \"summationTypeComboBox\": 0," + " \"transScaleRHSCheckBox\": true," + " \"transStitchParamsEdit\": \"\"" + " }," + " \"instrumentView\": {" + " \"I0MonitorIndex\": 2," + " \"correctDetectorsCheckBox\": true," + " \"detectorCorrectionTypeComboBox\": 0," + " \"intMonCheckBox\": true," + " \"lamMaxEdit\": 17," + " \"lamMinEdit\": 1.5," + " \"monBgMaxEdit\": 18," + " \"monBgMinEdit\": 17," + " \"monIntMaxEdit\": 10," + " \"monIntMinEdit\": 4" + " }," + " \"runsView\": {" + " \"comboSearchInstrument\": 0," + " \"runsTable\": {" + " \"filterBox\": \"\"," + " \"projectSave\": false," + " \"runsTableModel\": [" + " {" + " \"itemState\": 0," + " \"name\": \"HiddenGroupName1\"," + " \"postprocessedWorkspaceName\": \"\"," + " \"rows\": [" + " {" + " }" + " ]" + " }" + " ]" + " }," + " \"textSearch\": \"\"" + " }," + " \"saveView\": {" + " \"commaRadioButton\": true," + " \"fileFormatComboBox\": 0," + " \"filterEdit\": \"\"," + " \"prefixEdit\": \"\"," + " \"qResolutionCheckBox\": false," + " \"regexCheckBox\": false," + " \"savePathEdit\": \"\"," + " \"saveReductionResultsCheckBox\": false," + " \"spaceRadioButton\": false," + " \"tabRadioButton\": false," + " \"titleCheckBox\": false" + " }" + "}"}; + +const static QString MAINWINDOW_JSON_STRING{ + QString("{\"batches\": [") + BATCH_JSON_STRING + QString(", ") + + EMPTY_BATCH_JSON_STRING + QString("], ") + + QString("\"tag\": \"ISIS Reflectometry\"}")}; } // namespace /** @@ -171,7 +446,7 @@ public: "api.FrameworkManager.Instance()"); } - void test_decode() { + void test_decodeMainWindow() { CoderCommonTester tester; Decoder decoder; auto map = MantidQt::API::loadJSONFromString(MAINWINDOW_JSON_STRING); @@ -180,12 +455,40 @@ public: tester.testMainWindowView(dynamic_cast<QtMainWindowView *>(widget), map); } - void test_decodeBatch() { + void test_decodeEmptyBatch() { + CoderCommonTester tester; + auto map = MantidQt::API::loadJSONFromString(EMPTY_BATCH_JSON_STRING); + QtMainWindowView mwv; + mwv.initLayout(); + auto gui = dynamic_cast<QtBatchView *>(mwv.batches()[0]); + Decoder decoder; + decoder.decodeBatch(&mwv, 0, map); + + tester.testBatch(gui, &mwv, map); + } + + void test_decodePopulatedBatch() { + CoderCommonTester tester; + auto map = MantidQt::API::loadJSONFromString(BATCH_JSON_STRING); + QtMainWindowView mwv; + mwv.initLayout(); + auto gui = dynamic_cast<QtBatchView *>(mwv.batches()[0]); + Decoder decoder; + decoder.decodeBatch(&mwv, 0, map); + + tester.testBatch(gui, &mwv, map); + } + + void test_decodeBatchWhenInstrumentChanged() { CoderCommonTester tester; auto map = MantidQt::API::loadJSONFromString(BATCH_JSON_STRING); QtMainWindowView mwv; mwv.initLayout(); auto gui = dynamic_cast<QtBatchView *>(mwv.batches()[0]); + // Set the initial instrument to something different to the one we are + // decoding + gui->runs()->setSearchInstrument("POLREF"); + Decoder decoder; decoder.decodeBatch(&mwv, 0, map); -- GitLab