Adding fields to data set builder unit tests to test fields.
This commit is contained in:
parent
a52f2b5521
commit
cefc333a99
@ -23,6 +23,7 @@
|
||||
#include <vtkm/cont/DataSetBuilderExplicit.h>
|
||||
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
#include <vtkm/cont/testing/MakeTestDataSet.h>
|
||||
#include <vtkm/cont/testing/ExplicitTestData.h>
|
||||
|
||||
#include <vector>
|
||||
@ -53,7 +54,7 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
//Verify basics..
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCellSets() == 1,
|
||||
"Wrong number of cell sets.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 0,
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 2,
|
||||
"Wrong number of fields.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"Wrong number of coordinate systems.");
|
||||
@ -62,6 +63,26 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfCells() == numCells,
|
||||
"Wrong number of cells.");
|
||||
|
||||
// test various field-getting methods and associations
|
||||
try
|
||||
{
|
||||
ds.GetField("cellvar", vtkm::cont::Field::ASSOC_CELL_SET);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'cellvar' with ASSOC_CELL_SET.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ds.GetField("pointvar", vtkm::cont::Field::ASSOC_POINTS);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'pointvar' with ASSOC_POINT_SET.");
|
||||
}
|
||||
|
||||
|
||||
//Make sure bounds are correct.
|
||||
vtkm::Bounds computedBounds =
|
||||
ds.GetCoordinateSystem().GetBounds(DeviceAdapter());
|
||||
@ -97,41 +118,58 @@ CreateDataSetArr(bool useSeparatedCoords,
|
||||
const vtkm::IdComponent *indices,
|
||||
const vtkm::UInt8 *shape)
|
||||
{
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSetFieldAdd dsf;
|
||||
vtkm::cont::DataSetBuilderExplicit dsb;
|
||||
if (useSeparatedCoords)
|
||||
{
|
||||
std::vector<T> xvals(numPoints), yvals(numPoints), zvals(numPoints);
|
||||
std::vector<T> varP(numPoints), varC(numCells);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
{
|
||||
xvals[i] = coords[i*3 + 0];
|
||||
yvals[i] = coords[i*3 + 1];
|
||||
zvals[i] = coords[i*3 + 2];
|
||||
varP[i] = static_cast<T>(i*1.1f);
|
||||
}
|
||||
vtkm::cont::ArrayHandle<T> X,Y,Z;
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC[i] = static_cast<T>(i*1.1f);
|
||||
vtkm::cont::ArrayHandle<T> X,Y,Z,P,C;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(xvals), X);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(yvals), Y);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(zvals), Z);
|
||||
return dsb.Create(X,Y,Z,
|
||||
createAH(numCells, shape),
|
||||
createAH(numCells, indices),
|
||||
createAH(numConn, conn));
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(varP), P);
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(varC), C);
|
||||
dataSet = dsb.Create(X,Y,Z,
|
||||
createAH(numCells, shape),
|
||||
createAH(numCells, indices),
|
||||
createAH(numConn, conn));
|
||||
dsf.AddPointField(dataSet, "pointvar", P);
|
||||
dsf.AddCellField(dataSet, "cellvar", C);
|
||||
return dataSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<vtkm::Vec<T,3> > tmp(numPoints);
|
||||
std::vector<vtkm::Vec<T,1> > varP(numPoints), varC(numCells);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
{
|
||||
tmp[i][0] = coords[i*3 + 0];
|
||||
tmp[i][1] = coords[i*3 + 1];
|
||||
tmp[i][2] = coords[i*3 + 2];
|
||||
varP[i][0] = static_cast<T>(i*1.1f);
|
||||
}
|
||||
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC[i][0] = static_cast<T>(i*1.1f);
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<T,3> > pts;
|
||||
DFA::Copy(vtkm::cont::make_ArrayHandle(tmp), pts);
|
||||
return dsb.Create(pts,
|
||||
createAH(numCells, shape),
|
||||
createAH(numCells, indices),
|
||||
createAH(numConn, conn));
|
||||
dataSet = dsb.Create(pts,
|
||||
createAH(numCells, shape),
|
||||
createAH(numCells, indices),
|
||||
createAH(numConn, conn));
|
||||
dsf.AddPointField(dataSet, "pointvar", varP);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC);
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
@ -144,35 +182,50 @@ CreateDataSetVec(bool useSeparatedCoords,
|
||||
const vtkm::IdComponent *indices,
|
||||
const vtkm::UInt8 *shape)
|
||||
{
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSetFieldAdd dsf;
|
||||
vtkm::cont::DataSetBuilderExplicit dsb;
|
||||
|
||||
if (useSeparatedCoords)
|
||||
{
|
||||
std::vector<T> X(numPoints), Y(numPoints), Z(numPoints);
|
||||
std::vector<T> X(numPoints), Y(numPoints), Z(numPoints), varP(numPoints), varC(numCells);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
{
|
||||
X[i] = coords[i*3 + 0];
|
||||
Y[i] = coords[i*3 + 1];
|
||||
Z[i] = coords[i*3 + 2];
|
||||
varP[i] = static_cast<T>(i*1.1f);
|
||||
}
|
||||
return dsb.Create(X,Y,Z,
|
||||
createVec(numCells, shape),
|
||||
createVec(numCells, indices),
|
||||
createVec(numConn, conn));
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC[i] = static_cast<T>(i*1.1f);
|
||||
dataSet = dsb.Create(X,Y,Z,
|
||||
createVec(numCells, shape),
|
||||
createVec(numCells, indices),
|
||||
createVec(numConn, conn));
|
||||
dsf.AddPointField(dataSet, "pointvar", varP);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC);
|
||||
return dataSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<vtkm::Vec<T,3> > pts(numPoints);
|
||||
std::vector<vtkm::Vec<T,1> > varP(numPoints), varC(numCells);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
{
|
||||
pts[i][0] = coords[i*3 + 0];
|
||||
pts[i][1] = coords[i*3 + 1];
|
||||
pts[i][2] = coords[i*3 + 2];
|
||||
varP[i][0] = static_cast<T>(i*1.1f);
|
||||
}
|
||||
return dsb.Create(pts,
|
||||
createVec(numCells, shape),
|
||||
createVec(numCells, indices),
|
||||
createVec(numConn, conn));
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC[i][0] = static_cast<T>(i*1.1f);
|
||||
dataSet = dsb.Create(pts,
|
||||
createVec(numCells, shape),
|
||||
createVec(numCells, indices),
|
||||
createVec(numConn, conn));
|
||||
dsf.AddPointField(dataSet, "pointvar", varP);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC);
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include <vtkm/cont/DataSetBuilderRectilinear.h>
|
||||
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
||||
#include <vtkm/cont/DynamicCellSet.h>
|
||||
|
||||
#include <vtkm/cont/testing/MakeTestDataSet.h>
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
|
||||
#include <ctime>
|
||||
@ -46,7 +46,7 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
//Verify basics..
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCellSets() == 1,
|
||||
"Wrong number of cell sets.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 0,
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 2,
|
||||
"Wrong number of fields.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"Wrong number of coordinate systems.");
|
||||
@ -55,6 +55,25 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfCells() == numCells,
|
||||
"Wrong number of cells.");
|
||||
|
||||
// test various field-getting methods and associations
|
||||
try
|
||||
{
|
||||
ds.GetField("cellvar", vtkm::cont::Field::ASSOC_CELL_SET);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'cellvar' with ASSOC_CELL_SET.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ds.GetField("pointvar", vtkm::cont::Field::ASSOC_POINTS);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'pointvar' with ASSOC_POINT_SET.");
|
||||
}
|
||||
|
||||
//Make sure the bounds are correct.
|
||||
vtkm::Bounds res = ds.GetCoordinateSystem().GetBounds(DeviceAdapter());
|
||||
VTKM_TEST_ASSERT(test_equal(bounds, res),
|
||||
@ -108,6 +127,7 @@ RectilinearTests()
|
||||
|
||||
vtkm::cont::DataSetBuilderRectilinear dataSetBuilder;
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSetFieldAdd dsf;
|
||||
|
||||
std::uniform_int_distribution<vtkm::Id> randomDim(2,MAX_DIM_SIZE);
|
||||
std::uniform_int_distribution<vtkm::IdComponent> randomFill(0,NUM_FILL_METHODS-1);
|
||||
@ -142,18 +162,33 @@ RectilinearTests()
|
||||
std::cout << "1D cases" << std::endl;
|
||||
numPoints = dimensions[0];
|
||||
numCells = dimensions[0]-1;
|
||||
std::vector<T> varP1D(numPoints);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP1D[i] = static_cast<T>(i*1.1f);
|
||||
std::vector<T> varC1D(numCells);
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC1D[i] = static_cast<T>(i*1.1f);
|
||||
bounds.X = vtkm::Range(xCoordinates.front(), xCoordinates.back());
|
||||
std::cout << " Create with std::vector" << std::endl;
|
||||
dataSet = dataSetBuilder.Create(xCoordinates);
|
||||
dsf.AddPointField(dataSet, "pointvar", varP1D);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC1D);
|
||||
ValidateDataSet(dataSet, 1, numPoints, numCells, bounds);
|
||||
|
||||
|
||||
std::cout << "2D cases" << std::endl;
|
||||
numPoints = dimensions[0]*dimensions[1];
|
||||
numCells = (dimensions[0]-1)*(dimensions[1]-1);
|
||||
std::vector<T> varP2D(numPoints);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP2D[i] = static_cast<T>(i*1.1f);
|
||||
std::vector<T> varC2D(numPoints);
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC2D[i] = static_cast<T>(i*1.1f);
|
||||
bounds.Y = vtkm::Range(yCoordinates.front(), yCoordinates.back());
|
||||
|
||||
std::cout << " Create with std::vector" << std::endl;
|
||||
dataSet = dataSetBuilder.Create(xCoordinates, yCoordinates);
|
||||
dsf.AddPointField(dataSet, "pointvar", varP2D);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC2D);
|
||||
ValidateDataSet(dataSet, 2, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << " Create with C array" << std::endl;
|
||||
@ -161,20 +196,32 @@ RectilinearTests()
|
||||
dimensions[1],
|
||||
&xCoordinates.front(),
|
||||
&yCoordinates.front());
|
||||
dsf.AddPointField(dataSet, "pointvar", &varP2D.front(), numPoints);
|
||||
dsf.AddCellField(dataSet, "cellvar", &varC2D.front(), numCells);
|
||||
ValidateDataSet(dataSet, 2, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << " Create with ArrayHandle" << std::endl;
|
||||
dataSet = dataSetBuilder.Create(vtkm::cont::make_ArrayHandle(xCoordinates),
|
||||
vtkm::cont::make_ArrayHandle(yCoordinates));
|
||||
dsf.AddPointField(dataSet, "pointvar", vtkm::cont::make_ArrayHandle(varP2D));
|
||||
dsf.AddCellField(dataSet, "cellvar", vtkm::cont::make_ArrayHandle(varC2D));
|
||||
ValidateDataSet(dataSet, 2, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << "3D cases" << std::endl;
|
||||
numPoints *= dimensions[2];
|
||||
numCells *= dimensions[2]-1;
|
||||
std::vector<T> varP3D(numPoints);
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP3D[i] = static_cast<T>(i*1.1f);;
|
||||
std::vector<T> varC3D(numPoints);
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC3D[i] = static_cast<T>(i*1.1f);
|
||||
bounds.Z = vtkm::Range(zCoordinates.front(), zCoordinates.back());
|
||||
|
||||
std::cout << " Create with std::vector" << std::endl;
|
||||
dataSet = dataSetBuilder.Create(xCoordinates, yCoordinates, zCoordinates);
|
||||
dsf.AddPointField(dataSet, "pointvar", varP3D);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC3D);
|
||||
ValidateDataSet(dataSet, 3, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << " Create with C array" << std::endl;
|
||||
@ -184,12 +231,16 @@ RectilinearTests()
|
||||
&xCoordinates.front(),
|
||||
&yCoordinates.front(),
|
||||
&zCoordinates.front());
|
||||
dsf.AddPointField(dataSet, "pointvar", vtkm::cont::make_ArrayHandle(varP3D));
|
||||
dsf.AddCellField(dataSet, "cellvar", vtkm::cont::make_ArrayHandle(varC3D));
|
||||
ValidateDataSet(dataSet, 3, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << " Create with ArrayHandle" << std::endl;
|
||||
dataSet = dataSetBuilder.Create(vtkm::cont::make_ArrayHandle(xCoordinates),
|
||||
vtkm::cont::make_ArrayHandle(yCoordinates),
|
||||
vtkm::cont::make_ArrayHandle(zCoordinates));
|
||||
dsf.AddPointField(dataSet, "pointvar", vtkm::cont::make_ArrayHandle(varP3D));
|
||||
dsf.AddCellField(dataSet, "cellvar", vtkm::cont::make_ArrayHandle(varC3D));
|
||||
ValidateDataSet(dataSet, 3, numPoints, numCells, bounds);
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,6 @@
|
||||
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
||||
#include <vtkm/cont/DynamicCellSet.h>
|
||||
#include <vtkm/cont/testing/MakeTestDataSet.h>
|
||||
|
||||
#include <vtkm/cont/testing/Testing.h>
|
||||
|
||||
#include <time.h>
|
||||
@ -47,7 +46,7 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
//Verify basics..
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCellSets() == 1,
|
||||
"Wrong number of cell sets.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 0,
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfFields() == 2,
|
||||
"Wrong number of fields.");
|
||||
VTKM_TEST_ASSERT(ds.GetNumberOfCoordinateSystems() == 1,
|
||||
"Wrong number of coordinate systems.");
|
||||
@ -56,11 +55,29 @@ void ValidateDataSet(const vtkm::cont::DataSet &ds,
|
||||
VTKM_TEST_ASSERT(ds.GetCellSet().GetNumberOfCells() == numCells,
|
||||
"Wrong number of cells.");
|
||||
|
||||
// test various field-getting methods and associations
|
||||
try
|
||||
{
|
||||
ds.GetField("cellvar", vtkm::cont::Field::ASSOC_CELL_SET);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'cellvar' with ASSOC_CELL_SET.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ds.GetField("pointvar", vtkm::cont::Field::ASSOC_POINTS);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
VTKM_TEST_FAIL("Failed to get field 'pointvar' with ASSOC_POINT_SET.");
|
||||
}
|
||||
|
||||
//Make sure bounds are correct.
|
||||
vtkm::Bounds res = ds.GetCoordinateSystem().GetBounds(DeviceAdapter());
|
||||
VTKM_TEST_ASSERT(test_equal(bounds, res),
|
||||
"Bounds of coordinates do not match");
|
||||
|
||||
"Bounds of coordinates do not match");
|
||||
if (dim == 1)
|
||||
{
|
||||
vtkm::cont::CellSetStructured<1> cellSet;
|
||||
@ -130,6 +147,7 @@ UniformTests()
|
||||
|
||||
vtkm::cont::DataSetBuilderUniform dataSetBuilder;
|
||||
vtkm::cont::DataSet dataSet;
|
||||
vtkm::cont::DataSetFieldAdd dsf;
|
||||
|
||||
std::uniform_int_distribution<vtkm::Id> randomDim(2, MAX_DIM_SIZE);
|
||||
std::uniform_int_distribution<vtkm::IdComponent> randomFill(0, NUM_FILL_METHODS-1);
|
||||
@ -166,20 +184,36 @@ UniformTests()
|
||||
dimensions[2],
|
||||
origin[2],
|
||||
spacing[2]);
|
||||
|
||||
|
||||
std::cout << "3D case" << std::endl;
|
||||
vtkm::Id numPoints = dimensions[0]*dimensions[1]*dimensions[2];
|
||||
vtkm::Id numCells = (dimensions[0]-1)*(dimensions[1]-1)*(dimensions[2]-1);
|
||||
T varP3D[numPoints];
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP3D[i] = static_cast<T>(i*1.1f);
|
||||
T varC3D[numCells];
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC3D[i] = static_cast<T>(i*1.1f);
|
||||
dataSet = dataSetBuilder.Create(dimensions, origin, spacing);
|
||||
dsf.AddPointField(dataSet, "pointvar", varP3D, numPoints);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC3D, numCells);
|
||||
ValidateDataSet(dataSet, 3, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << "2D case" << std::endl;
|
||||
numPoints = dimensions[0]*dimensions[1];
|
||||
numCells = (dimensions[0]-1)*(dimensions[1]-1);
|
||||
bounds.Z = vtkm::Range(0, 0);
|
||||
T varP2D[numPoints];
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP2D[i] = static_cast<T>(i*1.1f);
|
||||
T varC2D[numCells];
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC2D[i] = static_cast<T>(i*1.1f);
|
||||
dataSet = dataSetBuilder.Create(vtkm::Id2(dimensions[0], dimensions[1]),
|
||||
vtkm::Vec<T,2>(origin[0], origin[1]),
|
||||
vtkm::Vec<T,2>(spacing[0], spacing[1]));
|
||||
dsf.AddPointField(dataSet, "pointvar", varP2D, numPoints);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC2D, numCells);
|
||||
ValidateDataSet(dataSet, 2, numPoints, numCells, bounds);
|
||||
|
||||
std::cout << "1D case" <<std::endl;
|
||||
@ -187,7 +221,15 @@ UniformTests()
|
||||
numCells = dimensions[0]-1;
|
||||
bounds.Y = vtkm::Range(0, 0);
|
||||
bounds.Z = vtkm::Range(0, 0);
|
||||
T varP1D[numPoints];
|
||||
for (std::size_t i = 0; i < numPoints; i++)
|
||||
varP1D[i] = static_cast<T>(i*1.1f);
|
||||
T varC1D[numCells];
|
||||
for (std::size_t i = 0; i < numCells; i++)
|
||||
varC1D[i] = static_cast<T>(i*1.1f);
|
||||
dataSet = dataSetBuilder.Create(dimensions[0], origin[0], spacing[0]);
|
||||
dsf.AddPointField(dataSet, "pointvar", varP1D, numPoints);
|
||||
dsf.AddCellField(dataSet, "cellvar", varC1D, numCells);
|
||||
ValidateDataSet(dataSet, 1, numPoints, numCells, bounds);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user