@@ -38,16 +38,19 @@ using namespace Mantid::Geometry;
38
38
using Mantid::MantidVec;
39
39
using Mantid::Kernel::V3D;
40
40
41
+ namespace {
42
+ std::string const PROPERTY_VALUE_TRUE (" 1" );
43
+ std::string const PROPERTY_VALUE_FALSE (" 0" );
44
+ } // namespace
45
+
41
46
class CompareWorkspacesTest : public CxxTest ::TestSuite {
42
47
public:
43
48
// This pair of boilerplate methods prevent the suite being created statically
44
49
// This means the constructor isn't called when running other tests
45
50
static CompareWorkspacesTest *createSuite () { return new CompareWorkspacesTest (); }
46
51
static void destroySuite (CompareWorkspacesTest *suite) { delete suite; }
47
52
48
- CompareWorkspacesTest () : ws1(WorkspaceCreationHelper::create2DWorkspace123(2 , 2 )), PROPERTY_VALUE_TRUE(" 1" ) {
49
- FrameworkManager::Instance ();
50
- }
53
+ CompareWorkspacesTest () : ws1(WorkspaceCreationHelper::create2DWorkspace123(2 , 2 )) { FrameworkManager::Instance (); }
51
54
52
55
void testName () { TS_ASSERT_EQUALS (checker.name (), " CompareWorkspaces" ); }
53
56
@@ -73,6 +76,146 @@ class CompareWorkspacesTest : public CxxTest::TestSuite {
73
76
TS_ASSERT (Mantid::API::equals (ws, ws));
74
77
}
75
78
79
+ void testNotMatches () {
80
+ if (!checker.isInitialized ())
81
+ checker.initialize ();
82
+
83
+ WorkspaceSingleValue_sptr ws1 = WorkspaceCreationHelper::createWorkspaceSingleValue (1.0 );
84
+ WorkspaceSingleValue_sptr ws2 = WorkspaceCreationHelper::createWorkspaceSingleValue (2.0 );
85
+ //
86
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
87
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
88
+
89
+ TS_ASSERT (checker.execute ());
90
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_FALSE);
91
+ // Same, using the Mantid::API::equals() function
92
+ TS_ASSERT (!Mantid::API::equals (ws1, ws2));
93
+ // cleanup
94
+ checker.resetProperties ();
95
+ }
96
+
97
+ void testMatchesRelative_large () {
98
+ if (!checker.isInitialized ())
99
+ checker.initialize ();
100
+
101
+ WorkspaceSingleValue_sptr wks1 = WorkspaceCreationHelper::createWorkspaceSingleValue (100000.0 );
102
+ WorkspaceSingleValue_sptr wks2 = WorkspaceCreationHelper::createWorkspaceSingleValue (100001.0 );
103
+
104
+ // Ensure they are NOT equal within absolute tolerance
105
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , wks1));
106
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , wks2));
107
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.01 ));
108
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , false ));
109
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
110
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_FALSE);
111
+ // Ensure they ARE equal within relative tolerance
112
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , wks1));
113
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , wks2));
114
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.01 ));
115
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , true ));
116
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
117
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
118
+ }
119
+
120
+ void testMatchesRelative_small () {
121
+ if (!checker.isInitialized ())
122
+ checker.initialize ();
123
+
124
+ WorkspaceSingleValue_sptr ws1 = WorkspaceCreationHelper::createWorkspaceSingleValue (0.000001 );
125
+ WorkspaceSingleValue_sptr ws2 = WorkspaceCreationHelper::createWorkspaceSingleValue (0.000002 );
126
+ WorkspaceSingleValue_sptr ws3 = WorkspaceCreationHelper::createWorkspaceSingleValue (0.00000201 );
127
+
128
+ // Ensure ws1, ws2 ARE equal within absolute tolerance
129
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
130
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
131
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.1 ));
132
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , false ));
133
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
134
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
135
+ // Ensure ws1, ws2 ARE NOT equal within relative tolerance
136
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
137
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
138
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.1 ));
139
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , true ));
140
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
141
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_FALSE);
142
+ // Ensure ws2, ws3 ARE equal within absolute tolerance
143
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws2));
144
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws3));
145
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.1 ));
146
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , false ));
147
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
148
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
149
+ // Ensure ws2, ws3 ARE equal within relative tolerance
150
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws2));
151
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws3));
152
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.1 ));
153
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , true ));
154
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
155
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
156
+ // cleanup
157
+ checker.resetProperties ();
158
+ }
159
+
160
+ void testNotMatchesRelative () {
161
+ if (!checker.isInitialized ())
162
+ checker.initialize ();
163
+
164
+ WorkspaceSingleValue_sptr ws1 = WorkspaceCreationHelper::createWorkspaceSingleValue (1.1 );
165
+ WorkspaceSingleValue_sptr ws2 = WorkspaceCreationHelper::createWorkspaceSingleValue (2.2 );
166
+ //
167
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
168
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
169
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 0.1 ));
170
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , true ));
171
+ //
172
+ TS_ASSERT_THROWS_NOTHING (checker.execute ());
173
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_FALSE);
174
+ // cleanup
175
+ checker.resetProperties ();
176
+ }
177
+
178
+ void testCheckErrorMatches () {
179
+ if (!checker.isInitialized ())
180
+ checker.initialize ();
181
+
182
+ WorkspaceSingleValue_sptr ws1 = WorkspaceCreationHelper::createWorkspaceSingleValueWithError (1.1 , 2.0 );
183
+ WorkspaceSingleValue_sptr ws2 = WorkspaceCreationHelper::createWorkspaceSingleValueWithError (1.1 , 2.0 );
184
+ //
185
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" CheckUncertainty" , true ));
186
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
187
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
188
+ //
189
+ TS_ASSERT (checker.execute ());
190
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
191
+ // Same, using the Mantid::API::equals() function
192
+ TS_ASSERT (Mantid::API::equals (ws1, ws2));
193
+ // cleanup
194
+ checker.resetProperties ();
195
+ }
196
+
197
+ void testCheckErrorNotMatches () {
198
+ if (!checker.isInitialized ())
199
+ checker.initialize ();
200
+
201
+ WorkspaceSingleValue_sptr ws1 = WorkspaceCreationHelper::createWorkspaceSingleValueWithError (1.1 , 2.0 );
202
+ WorkspaceSingleValue_sptr ws2 = WorkspaceCreationHelper::createWorkspaceSingleValueWithError (1.1 , 4.0 );
203
+ // make sure ARE equal if errors NOT checked
204
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" CheckUncertainty" , false ));
205
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
206
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
207
+ TS_ASSERT (checker.execute ());
208
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
209
+ // make sure are NOT equal if errors ARE checked
210
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" CheckUncertainty" , true ));
211
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace1" , ws1));
212
+ TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Workspace2" , ws2));
213
+ TS_ASSERT (checker.execute ());
214
+ TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_FALSE);
215
+ // cleanup
216
+ checker.resetProperties ();
217
+ }
218
+
76
219
void testPeaks_matches () {
77
220
if (!checker.isInitialized ())
78
221
checker.initialize ();
@@ -165,6 +308,8 @@ class CompareWorkspacesTest : public CxxTest::TestSuite {
165
308
TS_ASSERT_THROWS_NOTHING (checker.setProperty (" ToleranceRelErr" , true ));
166
309
TS_ASSERT (checker.execute ());
167
310
TS_ASSERT_EQUALS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
311
+ // cleanup
312
+ checker.resetProperties ();
168
313
}
169
314
170
315
void testPeaks_extrapeak () {
@@ -501,6 +646,8 @@ class CompareWorkspacesTest : public CxxTest::TestSuite {
501
646
TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 1.0e-5 ));
502
647
TS_ASSERT (checker.execute ());
503
648
TS_ASSERT_DIFFERS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
649
+ // cleanup
650
+ checker.resetProperties ();
504
651
}
505
652
506
653
void testMDHist_different_error () {
@@ -513,6 +660,8 @@ class CompareWorkspacesTest : public CxxTest::TestSuite {
513
660
TS_ASSERT_THROWS_NOTHING (checker.setProperty (" Tolerance" , 1.0e-5 ));
514
661
TS_ASSERT (checker.execute ());
515
662
TS_ASSERT_DIFFERS (checker.getPropertyValue (" Result" ), PROPERTY_VALUE_TRUE);
663
+ // cleanup
664
+ checker.resetProperties ();
516
665
}
517
666
518
667
void testDifferentSize () {
@@ -1302,6 +1451,4 @@ class CompareWorkspacesTest : public CxxTest::TestSuite {
1302
1451
private:
1303
1452
Mantid::Algorithms::CompareWorkspaces checker;
1304
1453
const Mantid::API::MatrixWorkspace_sptr ws1;
1305
-
1306
- const std::string PROPERTY_VALUE_TRUE;
1307
1454
};
0 commit comments