fixed a typo and added write support for ArrayHandleReverse

This commit is contained in:
Li-Ta Lo 2017-05-24 09:58:44 -06:00
parent b6993a7650
commit 6054280431
2 changed files with 36 additions and 7 deletions

@ -25,6 +25,8 @@
#define vtk_m_cont_ArrayHandleReverse_h
#include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ErrorBadType.h>
#include <vtkm/cont/ErrorBadValue.h>
namespace vtkm {
namespace cont {
@ -59,7 +61,7 @@ public:
VTKM_EXEC_CONT
void Set(vtkm::Id index, const ValueType &value) const {
this->portal1.Set(portal.GetNumberOfValues() - index - 1, value);
this->portal.Set(portal.GetNumberOfValues() - index - 1, value);
}
private:
@ -121,8 +123,8 @@ public:
VTKM_CONT
void Shrink( vtkm::Id vtkmNotUsed(numberOfValues) )
{
// throw vtkm::cont::ErrorBadType(
// "ArrayHandleReverse cannot shrink.");
throw vtkm::cont::Error(
"ArrayHandleReverse cannot shrink.");
}
VTKM_CONT
@ -199,8 +201,8 @@ public:
VTKM_CONT
void Shrink( vtkm::Id vtkmNotUsed(numberOfValues) )
{
// throw vtkm::cont::ErrorBadType(
// "ArrayHandleReverse cannot shrink.");
throw vtkm::cont::ErrorBadType(
"ArrayHandleReverse cannot shrink.");
}
VTKM_CONT

@ -27,7 +27,9 @@ namespace UnitTestArrayHandleIndexNamespace {
const vtkm::Id ARRAY_SIZE = 10;
void TestArrayHandleReverse() {
void TestArrayHandleReverseRead()
{
vtkm::cont::ArrayHandleIndex array(ARRAY_SIZE);
VTKM_TEST_ASSERT(array.GetNumberOfValues() == ARRAY_SIZE, "Bad size.");
@ -45,9 +47,34 @@ void TestArrayHandleReverse() {
}
}
void TestArrayHandleReverseWrite()
{
std::vector<vtkm::Id> ids(ARRAY_SIZE, 0);
vtkm::cont::ArrayHandle<vtkm::Id> handle = vtkm::cont::make_ArrayHandle(ids);
vtkm::cont::ArrayHandleReverse<vtkm::cont::ArrayHandle<vtkm::Id>> reverse =
vtkm::cont::make_ArrayHandleReverse(handle);
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++) {
reverse.GetPortalControl().Set(index, index);
}
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++) {
VTKM_TEST_ASSERT(handle.GetPortalConstControl().Get(index) == (9 - index),
"ArrayHandleReverse does not reverse array");
}
}
void TestArrayHandleReverse()
{
TestArrayHandleReverseRead();
TestArrayHandleReverseWrite();
}
};// namespace UnitTestArrayHandleIndexNamespace
int UnitTestArrayHandleReverse(int, char *[]) {
int UnitTestArrayHandleReverse(int, char *[])
{
using namespace UnitTestArrayHandleIndexNamespace;
return vtkm::cont::testing::Testing::Run(TestArrayHandleReverse);
}