Skip to content

Commit

Permalink
Re #11619. Added a test for a ragged histo workspace.
Browse files Browse the repository at this point in the history
  • Loading branch information
mantid-roman committed Apr 29, 2015
1 parent 0bd1993 commit d1c68f9
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 32 deletions.
157 changes: 126 additions & 31 deletions Code/Mantid/Framework/Algorithms/test/ExtractSpectraTest.h
Expand Up @@ -66,7 +66,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->getNumberHistograms(), nSpec);
params.testXRange("test_x_range",*ws);
params.testXRange(*ws);
}

void test_index_range()
Expand All @@ -78,7 +78,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testIndexRange("test_index_range",*ws);
params.testIndexRange(*ws);
}

void test_spectrum_list()
Expand All @@ -90,7 +90,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testSpectrumList("test_spectrum_list",*ws);
params.testSpectrumList(*ws);
}

void test_index_and_spectrum_list()
Expand All @@ -102,7 +102,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testSpectrumList("test_spectrum_list",*ws);
params.testSpectrumList(*ws);
}

void test_x_range_and_spectrum_list()
Expand All @@ -113,8 +113,8 @@ class ExtractSpectraTest : public CxxTest::TestSuite
auto ws = runAlgorithm(params);
if (!ws) return;

params.testXRange("test_x_range_and_spectrum_list",*ws);
params.testSpectrumList("test_x_range_and_spectrum_list",*ws);
params.testXRange(*ws);
params.testSpectrumList(*ws);
}

void test_invalid_x_range()
Expand Down Expand Up @@ -151,7 +151,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->getNumberHistograms(), nSpec);
params.testXRange("test_x_range_event",*ws);
params.testXRange(*ws);
}

void test_index_range_event()
Expand All @@ -163,7 +163,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testIndexRange("test_index_range_event",*ws);
params.testIndexRange(*ws);
}

void test_spectrum_list_event()
Expand All @@ -175,7 +175,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testSpectrumList("test_spectrum_list_event",*ws);
params.testSpectrumList(*ws);
}

void test_index_and_spectrum_list_event()
Expand All @@ -187,7 +187,7 @@ class ExtractSpectraTest : public CxxTest::TestSuite
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testSpectrumList("test_spectrum_list_event",*ws);
params.testSpectrumList(*ws);
}

void test_x_range_and_spectrum_list_event()
Expand All @@ -198,8 +198,8 @@ class ExtractSpectraTest : public CxxTest::TestSuite
auto ws = runAlgorithm(params);
if (!ws) return;

params.testXRange("test_x_range_and_spectrum_list_event",*ws);
params.testSpectrumList("test_x_range_and_spectrum_list_event",*ws);
params.testXRange(*ws);
params.testSpectrumList(*ws);
}

void test_invalid_x_range_event()
Expand Down Expand Up @@ -227,6 +227,51 @@ class ExtractSpectraTest : public CxxTest::TestSuite
auto ws = runAlgorithm(params, false);
}
}
// ---- test histo-ragged ----

void test_x_range_ragged()
{
Parameters params("histo-ragged");
params.setXRange();

auto ws = runAlgorithm(params);
if (!ws) return;

TS_ASSERT_EQUALS(ws->getNumberHistograms(), nSpec);
params.testXRange(*ws);
}

void test_index_range_ragged()
{
Parameters params("histo-ragged");
params.setIndexRange();

auto ws = runAlgorithm(params);
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testIndexRange(*ws);
}

void test_spectrum_list_ragged()
{
Parameters params("histo-ragged");
params.setSpectrumList();

auto ws = runAlgorithm(params);
if (!ws) return;

TS_ASSERT_EQUALS(ws->blocksize(), nBins);
params.testSpectrumList(*ws);
}

void xtest_invalid_x_range_ragged()
{
Parameters params("histo-ragged");
params.setInvalidXRange();

auto ws = runAlgorithm(params, false);
}

private:

Expand All @@ -242,6 +287,8 @@ class ExtractSpectraTest : public CxxTest::TestSuite
return createInputWorkspaceHisto();
else if (workspaceType == "event")
return createInputWorkspaceEvent();
else if (workspaceType == "histo-ragged")
return createInputWorkspaceHistoRagged();
throw std::runtime_error("Undefined workspace type");
}

Expand All @@ -259,6 +306,20 @@ class ExtractSpectraTest : public CxxTest::TestSuite
return space;
}

MatrixWorkspace_sptr createInputWorkspaceHistoRagged() const
{
// Set up a small workspace for testing
MatrixWorkspace_sptr space = WorkspaceFactory::Instance().create("Workspace2D", nSpec, nBins+1, nBins);
for (size_t j = 0; j < nSpec; ++j) {
for (size_t k = 0; k <= nBins; ++k) {
space->dataX(j)[k] = double(j + k);
}
space->dataY(j).assign(nBins, double(j+1));
space->dataE(j).assign(nBins, sqrt(double(j+1)));
}
return space;
}

MatrixWorkspace_sptr createInputWorkspaceEvent() const
{
EventWorkspace_sptr ws = WorkspaceCreationHelper::CreateEventWorkspace(int(nSpec), int(nBins), 50, 0.0, 1., 2);
Expand Down Expand Up @@ -292,10 +353,44 @@ class ExtractSpectraTest : public CxxTest::TestSuite
XMax = 3.1;
return *this;
}
void testXRange(const std::string& reference, const MatrixWorkspace& ws) const
void testXRange(const MatrixWorkspace& ws) const
{
TSM_ASSERT_EQUALS(reference, ws.blocksize(), 1);
TSM_ASSERT_EQUALS(reference, ws.readX(0)[0], 2.0);
if (wsType == "histo-ragged")
{
TS_ASSERT_EQUALS(ws.blocksize(), 6);
TS_ASSERT_EQUALS(ws.readY(0)[0], 0.0);
TS_ASSERT_EQUALS(ws.readY(0)[1], 0.0);
TS_ASSERT_EQUALS(ws.readY(0)[2], 1.0);
TS_ASSERT_EQUALS(ws.readY(0)[3], 0.0);
TS_ASSERT_EQUALS(ws.readY(0)[4], 0.0);
TS_ASSERT_EQUALS(ws.readY(0)[5], 0.0);

TS_ASSERT_EQUALS(ws.readY(1)[0], 0.0);
TS_ASSERT_EQUALS(ws.readY(1)[1], 2.0);
TS_ASSERT_EQUALS(ws.readY(1)[2], 0.0);
TS_ASSERT_EQUALS(ws.readY(1)[3], 0.0);
TS_ASSERT_EQUALS(ws.readY(1)[4], 0.0);
TS_ASSERT_EQUALS(ws.readY(1)[5], 0.0);

TS_ASSERT_EQUALS(ws.readY(2)[0], 3.0);
TS_ASSERT_EQUALS(ws.readY(2)[1], 0.0);
TS_ASSERT_EQUALS(ws.readY(2)[2], 0.0);
TS_ASSERT_EQUALS(ws.readY(2)[3], 0.0);
TS_ASSERT_EQUALS(ws.readY(2)[4], 0.0);
TS_ASSERT_EQUALS(ws.readY(2)[5], 0.0);

TS_ASSERT_EQUALS(ws.readY(3)[0], 0.0);
TS_ASSERT_EQUALS(ws.readY(3)[1], 0.0);
TS_ASSERT_EQUALS(ws.readY(3)[2], 0.0);
TS_ASSERT_EQUALS(ws.readY(3)[3], 0.0);
TS_ASSERT_EQUALS(ws.readY(3)[4], 0.0);
TS_ASSERT_EQUALS(ws.readY(3)[5], 0.0);
}
else
{
TS_ASSERT_EQUALS(ws.blocksize(), 1);
TS_ASSERT_EQUALS(ws.readX(0)[0], 2.0);
}
}

// ---- index range ----
Expand All @@ -305,20 +400,20 @@ class ExtractSpectraTest : public CxxTest::TestSuite
EndWorkspaceIndex = 3;
return *this;
}
void testIndexRange(const std::string& reference, const MatrixWorkspace& ws) const
void testIndexRange(const MatrixWorkspace& ws) const
{
TSM_ASSERT_EQUALS(reference, ws.getNumberHistograms(), 3);
TS_ASSERT_EQUALS(ws.getNumberHistograms(), 3);
if (wsType == "histo")
{
TSM_ASSERT_EQUALS(reference, ws.readY(0)[0], 1.0);
TSM_ASSERT_EQUALS(reference, ws.readY(1)[0], 2.0);
TSM_ASSERT_EQUALS(reference, ws.readY(2)[0], 3.0);
TS_ASSERT_EQUALS(ws.readY(0)[0], 1.0);
TS_ASSERT_EQUALS(ws.readY(1)[0], 2.0);
TS_ASSERT_EQUALS(ws.readY(2)[0], 3.0);
}
else if (wsType == "event")
{
TSM_ASSERT_EQUALS(reference, ws.getDetector(0)->getID(), 2);
TSM_ASSERT_EQUALS(reference, ws.getDetector(1)->getID(), 3);
TSM_ASSERT_EQUALS(reference, ws.getDetector(2)->getID(), 4);
TS_ASSERT_EQUALS(ws.getDetector(0)->getID(), 2);
TS_ASSERT_EQUALS(ws.getDetector(1)->getID(), 3);
TS_ASSERT_EQUALS(ws.getDetector(2)->getID(), 4);
}
}

Expand All @@ -331,20 +426,20 @@ class ExtractSpectraTest : public CxxTest::TestSuite
SpectrumList[2] = 4;
return *this;
}
void testSpectrumList(const std::string& reference, const MatrixWorkspace& ws) const
void testSpectrumList(const MatrixWorkspace& ws) const
{
TSM_ASSERT_EQUALS(reference, ws.getNumberHistograms(), 3);
TS_ASSERT_EQUALS(ws.getNumberHistograms(), 3);
if (wsType == "histo")
{
TSM_ASSERT_EQUALS(reference, ws.readY(0)[0], 0.0);
TSM_ASSERT_EQUALS(reference, ws.readY(1)[0], 2.0);
TSM_ASSERT_EQUALS(reference, ws.readY(2)[0], 4.0);
TS_ASSERT_EQUALS(ws.readY(0)[0], 0.0);
TS_ASSERT_EQUALS(ws.readY(1)[0], 2.0);
TS_ASSERT_EQUALS(ws.readY(2)[0], 4.0);
}
else if (wsType == "event")
{
TSM_ASSERT_EQUALS(reference, ws.getDetector(0)->getID(), 1);
TSM_ASSERT_EQUALS(reference, ws.getDetector(1)->getID(), 3);
TSM_ASSERT_EQUALS(reference, ws.getDetector(2)->getID(), 5);
TS_ASSERT_EQUALS(ws.getDetector(0)->getID(), 1);
TS_ASSERT_EQUALS(ws.getDetector(1)->getID(), 3);
TS_ASSERT_EQUALS(ws.getDetector(2)->getID(), 5);
}
}

Expand Down
1 change: 0 additions & 1 deletion Code/Mantid/docs/source/algorithms/ExtractSpectra-v1.rst
@@ -1,4 +1,3 @@

.. algorithm::

.. summary::
Expand Down

0 comments on commit d1c68f9

Please sign in to comment.