@@ -41,6 +41,7 @@ DEALINGS IN THE SOFTWARE.
4141#include < Testing/Utils/SCIRunFieldSamples.h>
4242
4343using namespace SCIRun ::Core::Geometry;
44+ using namespace SCIRun ::Core::Algorithms;
4445using namespace SCIRun ::Core::Algorithms::Fields;
4546using namespace SCIRun ::TestUtils;
4647
@@ -68,6 +69,26 @@ TEST(SetFieldDataToConstantValueAlgoTest, NullInputDoesNotThrow)
6869 ASSERT_NO_THROW (algo.runImpl (nullField, result));
6970}
7071
72+ TEST (SetFieldDataToConstantValueAlgoTest, InvalidType)
73+ {
74+ SetFieldDataToConstantValueAlgo algo;
75+ FieldHandle cubeTriSurf = CubeTriSurfLinearBasis (INT_E);
76+
77+ const int value = 5 ;
78+ algo.set (Parameters::Value, value);
79+ ASSERT_THROW (algo.set_option (Parameters::DataType, std::string (" notatype" )), AlgorithmParameterNotFound);
80+ }
81+
82+ TEST (SetFieldDataToConstantValueAlgoTest, InvalidBasis)
83+ {
84+ SetFieldDataToConstantValueAlgo algo;
85+ FieldHandle cubeTriSurf = CubeTriSurfLinearBasis (INT_E);
86+
87+ const int value = 5 ;
88+ algo.set (Parameters::Value, value);
89+ ASSERT_THROW (algo.set_option (Parameters::BasisOrder, std::string (" notabasis" )), AlgorithmParameterNotFound);
90+ }
91+
7192TEST (SetFieldDataToConstantValueAlgoTest, EmptyFieldNoValue)
7293{
7394 SetFieldDataToConstantValueAlgo algo;
@@ -76,6 +97,11 @@ TEST(SetFieldDataToConstantValueAlgoTest, EmptyFieldNoValue)
7697 FieldHandle result;
7798 ASSERT_TRUE (algo.runImpl (emptyTetVol, result));
7899
100+ ASSERT_EQ (result->vfield ()->get_data_type (), emptyTetVol->vfield ()->get_data_type ());
101+ ASSERT_EQ (result->vfield ()->basis_order (), emptyTetVol->vfield ()->basis_order ());
102+ ASSERT_TRUE (result->vfield ()->is_double ());
103+ ASSERT_TRUE (result->vfield ()->is_constantdata ());
104+
79105 GetFieldDataAlgo getData;
80106 DenseMatrixHandle data = getData.run (result);
81107 ASSERT_TRUE (data != nullptr );
@@ -93,14 +119,19 @@ TEST(SetFieldDataToConstantValueAlgoTest, NoValue)
93119 FieldHandle result;
94120 ASSERT_TRUE (algo.runImpl (tetTetVol, result));
95121
122+ ASSERT_EQ (result->vfield ()->get_data_type (), tetTetVol->vfield ()->get_data_type ());
123+ ASSERT_EQ (result->vfield ()->basis_order (), tetTetVol->vfield ()->basis_order ());
124+ ASSERT_TRUE (result->vfield ()->is_double ());
125+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
126+
96127 GetFieldDataAlgo getData;
97128 DenseMatrixHandle data = getData.run (result);
98129 ASSERT_TRUE (data != nullptr );
99130
100131 EXPECT_EQ (1 , data->ncols ());
101132 EXPECT_EQ (4 , data->nrows ());
102133 for (int i = 0 ; i < data->nrows (); ++i)
103- EXPECT_EQ (0 , (*data)(i,0 ));
134+ ASSERT_EQ (0 , (*data)(i,0 ));
104135}
105136
106137TEST (SetFieldDataToConstantValueAlgoTest, IntValue)
@@ -114,19 +145,24 @@ TEST(SetFieldDataToConstantValueAlgoTest, IntValue)
114145 FieldHandle result;
115146 ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
116147
148+ ASSERT_EQ (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
149+ ASSERT_EQ (result->vfield ()->basis_order (), cubeTriSurf->vfield ()->basis_order ());
150+ ASSERT_TRUE (result->vfield ()->is_int ());
151+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
152+
117153 GetFieldDataAlgo getData;
118154 DenseMatrixHandle data = getData.run (result);
119155 ASSERT_TRUE (data != nullptr );
120156
121157 EXPECT_EQ (1 , data->ncols ());
122158 EXPECT_EQ (8 , data->nrows ());
123159 for (int i = 0 ; i < data->nrows (); ++i)
124- EXPECT_EQ (value, (*data)(i,0 ));
160+ ASSERT_EQ (value, (*data)(i,0 ));
125161}
126162
127163// LoadTet():
128164// - see Core/Algorithms/Field/Tests/LoadFieldsForAlgoCoreTests.h
129- // - loads TetVolMesh field with 7 nodes, 3 elements, linear basis
165+ // - loads TetVolMesh field with 7 nodes, 3 elements, linear basis, Vector data type
130166TEST (SetFieldDataToConstantValueAlgoTest, PositiveValue)
131167{
132168 SetFieldDataToConstantValueAlgo algo;
@@ -139,14 +175,18 @@ TEST(SetFieldDataToConstantValueAlgoTest, PositiveValue)
139175 FieldHandle result;
140176 ASSERT_TRUE (algo.runImpl (tetmesh, result));
141177
142- DenseMatrixHandle data = getData.run (result);
178+ ASSERT_NE (result->vfield ()->get_data_type (), tetmesh->vfield ()->get_data_type ());
179+ ASSERT_EQ (result->vfield ()->basis_order (), tetmesh->vfield ()->basis_order ());
180+ ASSERT_TRUE (result->vfield ()->is_double ());
181+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
143182
183+ DenseMatrixHandle data = getData.run (result);
144184 ASSERT_TRUE (data != nullptr );
145185
146186 EXPECT_EQ (1 , data->ncols ());
147187 EXPECT_EQ (7 , data->nrows ());
148188 for (int i = 0 ; i < data->nrows (); ++i)
149- EXPECT_EQ (value, (*data)(i,0 ));
189+ ASSERT_EQ (value, (*data)(i,0 ));
150190}
151191
152192TEST (SetFieldDataToConstantValueAlgoTest, NegativeValue)
@@ -161,14 +201,70 @@ TEST(SetFieldDataToConstantValueAlgoTest, NegativeValue)
161201 FieldHandle result;
162202 ASSERT_TRUE (algo.runImpl (tetmesh, result));
163203
164- DenseMatrixHandle data = getData.run (result);
204+ ASSERT_NE (result->vfield ()->get_data_type (), tetmesh->vfield ()->get_data_type ());
205+ ASSERT_EQ (result->vfield ()->basis_order (), tetmesh->vfield ()->basis_order ());
206+ ASSERT_TRUE (result->vfield ()->is_double ());
207+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
165208
209+ DenseMatrixHandle data = getData.run (result);
166210 ASSERT_TRUE (data != nullptr );
167211
168212 EXPECT_EQ (1 , data->ncols ());
169213 EXPECT_EQ (7 , data->nrows ());
170214 for (int i = 0 ; i < data->nrows (); ++i)
171- EXPECT_EQ (value, (*data)(i,0 ));
215+ ASSERT_EQ (value, (*data)(i,0 ));
216+ }
217+
218+ TEST (SetFieldDataToConstantValueAlgoTest, DataTypeIntLinear)
219+ {
220+ SetFieldDataToConstantValueAlgo algo;
221+ FieldHandle cubeTriSurf = CubeTriSurfLinearBasis (INT_E);
222+
223+ const int value = -200 ;
224+ algo.set (Parameters::Value, value);
225+
226+ FieldHandle result;
227+ ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
228+
229+ ASSERT_EQ (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
230+ ASSERT_EQ (result->vfield ()->basis_order (), cubeTriSurf->vfield ()->basis_order ());
231+ ASSERT_TRUE (result->vfield ()->is_int ());
232+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
233+
234+ GetFieldDataAlgo getData;
235+ DenseMatrixHandle data = getData.run (result);
236+ ASSERT_TRUE (data != nullptr );
237+
238+ EXPECT_EQ (1 , data->ncols ());
239+ EXPECT_EQ (8 , data->nrows ());
240+ for (int i = 0 ; i < data->nrows (); ++i)
241+ ASSERT_EQ (value, (*data)(i,0 ));
242+ }
243+
244+ TEST (SetFieldDataToConstantValueAlgoTest, DataTypeIntConstant)
245+ {
246+ SetFieldDataToConstantValueAlgo algo;
247+ FieldHandle cubeTriSurf = CubeTriSurfConstantBasis (INT_E);
248+
249+ const int value = -200 ;
250+ algo.set (Parameters::Value, value);
251+
252+ FieldHandle result;
253+ ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
254+
255+ ASSERT_EQ (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
256+ ASSERT_EQ (result->vfield ()->basis_order (), cubeTriSurf->vfield ()->basis_order ());
257+ ASSERT_TRUE (result->vfield ()->is_int ());
258+ ASSERT_TRUE (result->vfield ()->is_constantdata ());
259+
260+ GetFieldDataAlgo getData;
261+ DenseMatrixHandle data = getData.run (result);
262+ ASSERT_TRUE (data != nullptr );
263+
264+ EXPECT_EQ (1 , data->ncols ());
265+ EXPECT_EQ (12 , data->nrows ());
266+ for (int i = 0 ; i < data->nrows (); ++i)
267+ ASSERT_EQ (value, (*data)(i,0 ));
172268}
173269
174270TEST (SetFieldDataToConstantValueAlgoTest, DataTypeDoubleToInt)
@@ -178,67 +274,107 @@ TEST(SetFieldDataToConstantValueAlgoTest, DataTypeDoubleToInt)
178274
179275 const int value = 5 ;
180276 algo.set (Parameters::Value, value);
181- algo.set (Parameters::DataType, " int" );
277+ algo.set_option (Parameters::DataType, std::string (" int" ));
278+
279+ FieldHandle result;
280+ ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
281+
282+ ASSERT_NE (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
283+ ASSERT_EQ (result->vfield ()->basis_order (), cubeTriSurf->vfield ()->basis_order ());
284+ ASSERT_TRUE (result->vfield ()->is_int ());
285+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
286+
287+ GetFieldDataAlgo getData;
288+ DenseMatrixHandle data = getData.run (result);
289+ ASSERT_TRUE (data != nullptr );
290+
291+ EXPECT_EQ (1 , data->ncols ());
292+ EXPECT_EQ (8 , data->nrows ());
293+ for (int i = 0 ; i < data->nrows (); ++i)
294+ ASSERT_EQ (value, (*data)(i,0 ));
295+ }
296+
297+ TEST (SetFieldDataToConstantValueAlgoTest, DataTypeDoubleToIntFromDouble)
298+ {
299+ SetFieldDataToConstantValueAlgo algo;
300+ FieldHandle cubeTriSurf = CubeTriSurfLinearBasis (DOUBLE_E);
301+
302+ const double value = 5.2 ;
303+ const int intValue = 5 ;
304+ algo.set (Parameters::Value, value);
305+ algo.set_option (Parameters::DataType, std::string (" int" ));
182306
183307 FieldHandle result;
184308 ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
185309
310+ ASSERT_NE (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
311+ ASSERT_EQ (result->vfield ()->basis_order (), cubeTriSurf->vfield ()->basis_order ());
312+ ASSERT_TRUE (result->vfield ()->is_int ());
313+ ASSERT_TRUE (result->vfield ()->is_lineardata ());
314+
186315 GetFieldDataAlgo getData;
187316 DenseMatrixHandle data = getData.run (result);
188317 ASSERT_TRUE (data != nullptr );
189318
190319 EXPECT_EQ (1 , data->ncols ());
191320 EXPECT_EQ (8 , data->nrows ());
192321 for (int i = 0 ; i < data->nrows (); ++i)
193- EXPECT_EQ (value , (*data)(i,0 ));
322+ ASSERT_EQ (intValue , (*data)(i,0 ));
194323}
195324
196325TEST (SetFieldDataToConstantValueAlgoTest, BasisOrderLinearToConstantTet)
197326{
198327 SetFieldDataToConstantValueAlgo algo;
199328 FieldHandle tetmesh = LoadTet ();
200- ASSERT_EQ (1 , tetmesh->vfield ()->basis_order ());
201329 GetFieldDataAlgo getData;
202330
203331 const double value = -5.7 ;
204332 algo.set (Parameters::Value, value);
205- algo.set (Parameters::BasisOrder, " constant" );
333+ algo.set_option (Parameters::BasisOrder, std::string ( " constant" ) );
206334
207335 FieldHandle result;
208336 ASSERT_TRUE (algo.runImpl (tetmesh, result));
209337 ASSERT_EQ (0 , result->vfield ()->basis_order ());
210338
339+ ASSERT_NE (result->vfield ()->get_data_type (), tetmesh->vfield ()->get_data_type ());
340+ ASSERT_TRUE (result->vfield ()->is_double ());
341+ ASSERT_TRUE (tetmesh->vfield ()->is_lineardata ());
342+ ASSERT_TRUE (result->vfield ()->is_constantdata ());
343+
211344 DenseMatrixHandle data = getData.run (result);
212345
213346 ASSERT_TRUE (data != nullptr );
214347
215348 EXPECT_EQ (1 , data->ncols ());
216- EXPECT_EQ (7 , data->nrows ());
349+ EXPECT_EQ (3 , data->nrows ());
217350 for (int i = 0 ; i < data->nrows (); ++i)
218- EXPECT_EQ (value, (*data)(i,0 ));
351+ ASSERT_EQ (value, (*data)(i,0 ));
219352}
220353
221-
222354TEST (SetFieldDataToConstantValueAlgoTest, BasisOrderLinearToConstantTri)
223355{
224356 SetFieldDataToConstantValueAlgo algo;
225357 FieldHandle cubeTriSurf = CubeTriSurfLinearBasis (INT_E);
226358
227359 const int value = 5 ;
228360 algo.set (Parameters::Value, value);
229- algo.set (Parameters::BasisOrder, " constant" );
361+ algo.set_option (Parameters::BasisOrder, std::string ( " constant" ) );
230362
231363 FieldHandle result;
232364 ASSERT_TRUE (algo.runImpl (cubeTriSurf, result));
233- ASSERT_EQ (0 , result->vfield ()->basis_order ());
365+
366+ ASSERT_EQ (result->vfield ()->get_data_type (), cubeTriSurf->vfield ()->get_data_type ());
367+ ASSERT_TRUE (result->vfield ()->is_int ());
368+ ASSERT_TRUE (cubeTriSurf->vfield ()->is_lineardata ());
369+ ASSERT_TRUE (result->vfield ()->is_constantdata ());
234370
235371 GetFieldDataAlgo getData;
236372 DenseMatrixHandle data = getData.run (result);
237373 ASSERT_TRUE (data != nullptr );
238374
239375 EXPECT_EQ (1 , data->ncols ());
240- EXPECT_EQ (8 , data->nrows ());
376+ EXPECT_EQ (12 , data->nrows ());
241377 for (int i = 0 ; i < data->nrows (); ++i)
242- EXPECT_EQ (value, (*data)(i,0 ));
378+ ASSERT_EQ (value, (*data)(i,0 ));
243379}
244380
0 commit comments