Add tests for ReleaseResources of fancy arrays

The `ReleaseResources` method should work for all arrays (even if it
effectively does not do anything). However, the implementation of
`ReleaseResources` is generally to call `Allocate` with 0. Several fancy
arrays balk at this because it is resizing a read-only array. There
should be an exception for this.
This commit is contained in:
Kenneth Moreland 2020-12-07 11:54:41 -07:00
parent 03b814a9a3
commit a6b9d5c497

@ -343,6 +343,8 @@ private:
vtkm::cont::ArrayCopy(soaArray, basicArray); vtkm::cont::ArrayCopy(soaArray, basicArray);
VTKM_TEST_ASSERT(basicArray.GetNumberOfValues() == ARRAY_SIZE); VTKM_TEST_ASSERT(basicArray.GetNumberOfValues() == ARRAY_SIZE);
CheckPortal(basicArray.ReadPortal()); CheckPortal(basicArray.ReadPortal());
soaArray.ReleaseResources();
} }
{ {
@ -453,6 +455,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_c, vtkm::Vec<ValueType, 3>(value)), VTKM_TEST_ASSERT(test_equal(result_c, vtkm::Vec<ValueType, 3>(value)),
"CompositeVector Handle Failed"); "CompositeVector Handle Failed");
} }
composite.ReleaseResources();
} }
}; };
@ -480,6 +484,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, value), "Counting Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, value), "Counting Handle Failed");
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed");
} }
constant.ReleaseResources();
} }
}; };
@ -516,6 +522,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed");
component_value = ComponentType(component_value + ComponentType(1)); component_value = ComponentType(component_value + ComponentType(1));
} }
counting.ReleaseResources();
} }
}; };
@ -547,6 +555,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
} }
implicit.ReleaseResources();
} }
}; };
@ -608,6 +618,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, control_value), VTKM_TEST_ASSERT(test_equal(result_v, control_value),
"ArrayHandleConcatenate as Input Failed"); "ArrayHandleConcatenate as Input Failed");
} }
concatenate.ReleaseResources();
} }
} }
}; };
@ -660,6 +672,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
} }
permutation.ReleaseResources();
} }
} }
}; };
@ -706,6 +720,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
} }
view.ReleaseResources();
} }
} }
}; };
@ -743,6 +759,8 @@ private:
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed"); VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed");
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Transform Handle Control Failed"); VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Transform Handle Control Failed");
} }
transformed.ReleaseResources();
} }
}; };
@ -823,6 +841,8 @@ private:
"Transform Counting Handle Control Failed"); "Transform Counting Handle Control Failed");
component_value = ComponentType(component_value + ComponentType(1)); component_value = ComponentType(component_value + ComponentType(1));
} }
countingTransformed.ReleaseResources();
} }
}; };
@ -850,6 +870,8 @@ private:
VTKM_TEST_ASSERT(resultPortal.Get(i) == static_cast<CastToType>(inputPortal.Get(i)), VTKM_TEST_ASSERT(resultPortal.Get(i) == static_cast<CastToType>(inputPortal.Get(i)),
"Casting ArrayHandle Failed"); "Casting ArrayHandle Failed");
} }
castArray.ReleaseResources();
} }
}; };
@ -904,6 +926,8 @@ private:
// verify results // verify results
VTKM_TEST_ASSERT(test_equal_portals(result.ReadPortal(), input.ReadPortal()), VTKM_TEST_ASSERT(test_equal_portals(result.ReadPortal(), input.ReadPortal()),
"CastingArrayHandle failed"); "CastingArrayHandle failed");
multiplexArray.ReleaseResources();
} }
}; };
@ -971,6 +995,8 @@ private:
totalIndex++; totalIndex++;
} }
} }
groupArray.ReleaseResources();
} }
}; };
@ -1067,11 +1093,14 @@ private:
vtkm::cont::ArrayHandle<vtkm::Id> dummyArray; vtkm::cont::ArrayHandle<vtkm::Id> dummyArray;
auto groupVecArray = vtkm::cont::make_ArrayHandleGroupVecVariable(sourceArray, offsetsArray);
vtkm::worklet::DispatcherMapField<GroupVariableInputWorklet> dispatcher; vtkm::worklet::DispatcherMapField<GroupVariableInputWorklet> dispatcher;
dispatcher.Invoke(vtkm::cont::make_ArrayHandleGroupVecVariable(sourceArray, offsetsArray), dispatcher.Invoke(groupVecArray, dummyArray);
dummyArray);
dummyArray.ReadPortal(); dummyArray.ReadPortal();
groupVecArray.ReleaseResources();
} }
}; };
@ -1164,6 +1193,8 @@ private:
ValueType(static_cast<ValueComponentType>(i))); ValueType(static_cast<ValueComponentType>(i)));
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "ArrayHandleZip Failed as input"); VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "ArrayHandleZip Failed as input");
} }
zip.ReleaseResources();
} }
}; };
@ -1187,6 +1218,8 @@ private:
// No output to verify since none is stored in memory. Just checking that // No output to verify since none is stored in memory. Just checking that
// this compiles/runs without errors. // this compiles/runs without errors.
discard.ReleaseResources();
} }
}; };