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