Skip to content

Commit 7677330

Browse files
author
Ayla Khan
committed
Fill in more tests.
1 parent 65cbeda commit 7677330

File tree

1 file changed

+154
-18
lines changed

1 file changed

+154
-18
lines changed

src/Core/Algorithms/Field/Tests/SetFieldDataToConstantValueAlgoTests.cc

Lines changed: 154 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ DEALINGS IN THE SOFTWARE.
4141
#include <Testing/Utils/SCIRunFieldSamples.h>
4242

4343
using namespace SCIRun::Core::Geometry;
44+
using namespace SCIRun::Core::Algorithms;
4445
using namespace SCIRun::Core::Algorithms::Fields;
4546
using 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+
7192
TEST(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

106137
TEST(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
130166
TEST(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

152192
TEST(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

174270
TEST(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

196325
TEST(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-
222354
TEST(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

Comments
 (0)