diff --git a/Code/Mantid/Framework/API/test/WorkspaceOpOverloadsTest.h b/Code/Mantid/Framework/API/test/WorkspaceOpOverloadsTest.h index a33ae208c70f91ea32f6d0aa8b2c8f38e18851e3..652fcc8a2d2b5984a5cd1fc84062007f46bf565f 100644 --- a/Code/Mantid/Framework/API/test/WorkspaceOpOverloadsTest.h +++ b/Code/Mantid/Framework/API/test/WorkspaceOpOverloadsTest.h @@ -142,6 +142,63 @@ public: TS_ASSERT( WorkspaceHelpers::sharedXData(ws) ); } + void test_makeDistribution() + { + // N.B. This is also tested in the tests for the Convert[To/From]Distribution algorithms. + // Test only on tiny data here. + auto ws = boost::make_shared<WorkspaceTester>(); + ws->init(2,2,1); + ws->dataX(0)[1] = 3.0; + ws->dataX(1)[1] = 0.5; + TS_ASSERT( ! ws->isDistribution() ); + + TS_ASSERT_THROWS_NOTHING( WorkspaceHelpers::makeDistribution(ws) ); + TS_ASSERT( ws->isDistribution() ); + TS_ASSERT_EQUALS( ws->readX(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(0)[1], 3.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[1], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(0)[0], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(1)[0], 2.0 ) + TS_ASSERT_EQUALS( ws->readE(0)[0], 0.5 ) + TS_ASSERT_EQUALS( ws->readE(1)[0], 2.0 ) + + // Try and do it again - will do nothing + TS_ASSERT_THROWS_NOTHING( WorkspaceHelpers::makeDistribution(ws) ); + TS_ASSERT( ws->isDistribution() ); + TS_ASSERT_EQUALS( ws->readX(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(0)[1], 3.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[1], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(0)[0], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(1)[0], 2.0 ) + TS_ASSERT_EQUALS( ws->readE(0)[0], 0.5 ) + TS_ASSERT_EQUALS( ws->readE(1)[0], 2.0 ) + + // Now reverse the operation + TS_ASSERT_THROWS_NOTHING( WorkspaceHelpers::makeDistribution(ws,false) ); + TS_ASSERT( ! ws->isDistribution() ); + TS_ASSERT_EQUALS( ws->readX(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(0)[1], 3.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[1], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readY(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readE(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readE(1)[0], 1.0 ) + + // Try and do it again - will do nothing + TS_ASSERT_THROWS_NOTHING( WorkspaceHelpers::makeDistribution(ws,false) ); + TS_ASSERT( ! ws->isDistribution() ); + TS_ASSERT_EQUALS( ws->readX(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(0)[1], 3.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readX(1)[1], 0.5 ) + TS_ASSERT_EQUALS( ws->readY(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readY(1)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readE(0)[0], 1.0 ) + TS_ASSERT_EQUALS( ws->readE(1)[0], 1.0 ) + } }; #endif