// Mantid Repository : https://github.com/mantidproject/mantid // // Copyright © 2019 ISIS Rutherford Appleton Laboratory UKRI, // NScD Oak Ridge National Laboratory, European Spallation Source // & Institut Laue - Langevin // SPDX - License - Identifier: GPL - 3.0 + #ifndef ISISREFLECTOMETRY_TEST_DECODER_TEST_H_ #define ISISREFLECTOMETRY_TEST_DECODER_TEST_H_ #include "../../../ISISReflectometry/GUI/Common/Decoder.h" #include "../ReflMockObjects.h" #include "CoderCommonTester.h" #include "MantidAPI/FrameworkManager.h" #include "MantidQtWidgets/Common/QtJSONUtils.h" #include <cxxtest/TestSuite.h> #include <QMap> #include <QString> #include <QVariant> namespace { const static QString 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}}"}; } /** * QApplication * * Uses setUpWorld/tearDownWorld to initialize & finalize * QApplication object */ class QApplicationHolder : CxxTest::GlobalFixture { public: bool setUpWorld() override { m_app = new QApplication(m_argc, m_argv); qRegisterMetaType<std::string>("StdString"); qRegisterMetaType<Mantid::API::Workspace_sptr>("Workspace"); return true; } bool tearDownWorld() override { delete m_app; return true; } int m_argc = 1; GNU_DIAG_OFF("pedantic") char *m_argv[1] = {"DecoderTest"}; GNU_DIAG_ON("pedantic") QApplication *m_app; }; static QApplicationHolder MAIN_QAPPLICATION; namespace MantidQt { namespace CustomInterfaces { namespace ISISReflectometry { class DecoderTest : public CxxTest::TestSuite { public: static DecoderTest *createSuite() { return new DecoderTest(); } static void destroySuite(DecoderTest *suite) { delete suite; } void setUp() override { Mantid::API::FrameworkManager::Instance(); } void test_decodeBatch() { CoderCommonTester tester; auto map = MantidQt::API::loadJSONFromString(JSON_STRING); QtMainWindowView mwv; mwv.initLayout(); auto gui = dynamic_cast<QtBatchView *>(mwv.batches()[0]); Decoder decoder; decoder.decodeBatch(gui, mwv, map); tester.testBatch(gui, mwv, map); } }; } // namespace ISISReflectometry } // namespace CustomInterfaces } // namespace MantidQt #endif /* ISISREFLECTOMETRY_TEST_DECODER_TEST_H_ */