small tweak for multiblock class and its unit test

This commit is contained in:
dongliangchu 2017-05-11 11:05:47 -04:00
parent d24e57aaac
commit dffc1ac545
2 changed files with 51 additions and 44 deletions

@ -37,13 +37,13 @@ public:
VTKM_CONT
MultiBlock(const vtkm::cont::DataSet &ds)
{
this->blocks.push_back(ds);
this->blocks.push_back(ds);
}
VTKM_CONT
MultiBlock(const vtkm::cont::MultiBlock &src)
{
this->blocks=src.GetBlocks();
this->blocks = src.GetBlocks();
}
VTKM_CONT
@ -52,15 +52,15 @@ public:
}
VTKM_CONT
MultiBlock(const std::vector<vtkm::cont::DataSet> mblocks)
MultiBlock(const std::vector<vtkm::cont::DataSet> &mblocks)
{
this->blocks=mblocks;
this->blocks = mblocks;
}
VTKM_CONT
MultiBlock &operator=(const vtkm::cont::MultiBlock &src)
{
this->blocks=src.GetBlocks();
this->blocks = src.GetBlocks();
}
~MultiBlock()
@ -76,19 +76,27 @@ public:
VTKM_CONT
const vtkm::cont::DataSet &GetBlock(vtkm::Id blockId) const
{
return this->blocks[blockId];
return this->blocks[blockId];
}
const std::vector<vtkm::cont::DataSet> &GetBlocks() const
{
return this->blocks;
return this->blocks;
}
VTKM_CONT
vtkm::cont::DataSet &AddBlock(vtkm::cont::DataSet ds)
void AddBlock(vtkm::cont::DataSet &ds)
{
this->blocks.push_back(ds);
return this->blocks[this->blocks.size()-1];
this->blocks.push_back(ds);
}
VTKM_CONT
void AddBlocks(std::vector<vtkm::cont::DataSet> &mblocks)
{
for(int i = 0; i < mblocks.size(); i++)
{
AddBlock(mblocks[i]);
}
}
private:
@ -100,4 +108,4 @@ private:
}
} // namespace vtkm::cont
#endif //vtk_m_cont_CellSet_h
#endif

@ -35,53 +35,52 @@ static void MultiBlock_TwoDimUniformTest();
void TestMultiBlock_Uniform()
{
std::cout << std::endl;
std::cout << "--TestDataSet_Uniform--" << std::endl << std::endl;
std::cout << "--TestDataSet Uniform and Rectilinear--" << std::endl << std::endl;
MultiBlock_TwoDimUniformTest();
}
static void
MultiBlock_TwoDimUniformTest()
{
std::cout<<"MultiBlock 2D Uniform data set"<<std::endl;
{
vtkm::cont::testing::MakeTestDataSet testDataSet;
vtkm::cont::MultiBlock TestBlock;
vtkm::cont::MultiBlock TestBlock;
vtkm::cont::DataSet TDset1=testDataSet.Make2DUniformDataSet0();
vtkm::cont::DataSet TDset2=testDataSet.Make3DUniformDataSet0();
vtkm::cont::DataSet dataSet = testDataSet.Make2DUniformDataSet0();
TestBlock.AddBlock(dataSet);
TestBlock.AddBlock(dataSet);
vtkm::cont::DataSet TestDSet =TestBlock.GetBlock(1);
TestBlock.AddBlock(TDset1);
TestBlock.AddBlock(TDset2);
VTKM_TEST_ASSERT(TestBlock.GetNumberOfBlocks() == 2,
"Incorrect number of blocks");
VTKM_TEST_ASSERT(dataSet.GetNumberOfFields() == TestDSet.GetNumberOfFields(),
vtkm::cont::DataSet TestDSet =TestBlock.GetBlock(0);
VTKM_TEST_ASSERT(TDset1.GetNumberOfFields() == TestDSet.GetNumberOfFields(),
"Incorrect number of fields");
VTKM_TEST_ASSERT(dataSet.GetNumberOfCoordinateSystems() == TestDSet.GetNumberOfCoordinateSystems(),
VTKM_TEST_ASSERT(TDset1.GetNumberOfCoordinateSystems() == TestDSet.GetNumberOfCoordinateSystems(),
"Incorrect number of coordinate systems");
// test various field-getting methods and associations
try
{
TestDSet.GetField("cellvar", vtkm::cont::Field::ASSOC_CELL_SET);
}
catch (...)
{
VTKM_TEST_FAIL("Failed to get field 'cellvar' with ASSOC_CELL_SET.");
}
TestDSet =TestBlock.GetBlock(1);
VTKM_TEST_ASSERT(TDset2.GetNumberOfFields() == TestDSet.GetNumberOfFields(),
"Incorrect number of fields");
VTKM_TEST_ASSERT(TDset2.GetNumberOfCoordinateSystems() == TestDSet.GetNumberOfCoordinateSystems(),
"Incorrect number of coordinate systems");
std::vector<vtkm::cont::DataSet> Vblocks;
Vblocks.push_back(testDataSet.Make2DRectilinearDataSet0());
Vblocks.push_back(testDataSet.Make3DRegularDataSet1());
Vblocks.push_back(testDataSet.Make3DRegularDataSet0());
try
vtkm::cont::MultiBlock T2Block(Vblocks);
std::vector<vtkm::cont::DataSet> InBlocks = T2Block.GetBlocks();
for(int j=0; j<InBlocks.size(); j++)
{
TestDSet.GetField("pointvar", vtkm::cont::Field::ASSOC_POINTS);
}
catch (...)
{
VTKM_TEST_FAIL("Failed to get field 'pointvar' with ASSOC_POINT_SET.");
}
vtkm::cont::DataSet TestDSet =InBlocks[j];
VTKM_TEST_ASSERT(Vblocks[j].GetNumberOfFields() == TestDSet.GetNumberOfFields(),
"Incorrect number of fields");
VTKM_TEST_ASSERT(Vblocks[j].GetNumberOfCoordinateSystems() == TestDSet.GetNumberOfCoordinateSystems(),
"Incorrect number of coordinate systems");
}
}