MCPcopy Create free account
hub / github.com/Kitware/VTK / TestDataArrayIterators

Function TestDataArrayIterators

Common/Core/Testing/Cxx/TestDataArrayIterators.cxx:17–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15#define SILENT
16
17int TestDataArrayIterators(int, char*[])
18{
19 vtkIdType numComps = 4;
20 vtkIdType numValues = 100000000; // 10 million
21 assert(numValues % numComps == 0);
22 vtkIdType numTuples = numValues / numComps;
23
24 vtkNew<vtkFloatArray> arrayContainer;
25 vtkFloatArray* array = arrayContainer;
26 array->SetNumberOfComponents(numComps);
27 array->SetNumberOfTuples(numTuples);
28 for (vtkIdType i = 0; i < numValues; ++i)
29 {
30 // Just fill with consistent data
31 array->SetValue(i, i % 97);
32 }
33
34 // Create the vtkAOSDataArrayTemplate testing implementation:
35 vtkNew<vtkAOSDataArrayTemplate<float>> tdaContainer;
36 vtkAOSDataArrayTemplate<float>* tda = tdaContainer;
37 tda->SetNumberOfComponents(numComps);
38 tda->SetArray(arrayContainer->GetPointer(0), numValues, 1);
39
40 // should be vtkAOSDataArrayTemplate<float>::Iterator (float*):
41 vtkFloatArray::Iterator datBegin = array->Begin();
42 vtkFloatArray::Iterator datIter = array->Begin();
43 if (typeid(datBegin) != typeid(float*))
44 {
45 std::cerr << "Error: vtkFloatArray::Iterator is not a float*.";
46 return EXIT_FAILURE;
47 }
48
49 // should be vtkTypedDataArrayIterator<float>:
50 vtkAOSDataArrayTemplate<float>::Iterator tdaBegin =
51 vtkAOSDataArrayTemplate<float>::FastDownCast(tda)->Begin();
52 vtkAOSDataArrayTemplate<float>::Iterator tdaIter =
53 vtkAOSDataArrayTemplate<float>::FastDownCast(tda)->Begin();
54 if (typeid(tdaBegin) != typeid(float*))
55 {
56 std::cerr << "Error: vtkAOSDataArrayTemplate<float>::Iterator is not a "
57 "float*.";
58 return EXIT_FAILURE;
59 }
60
61 // Validate that the iterators return the same values from operator[] and
62 // operator* as GetValue;
63 for (vtkIdType i = 0; i < numValues; ++i)
64 {
65 float lookup = array->GetValue(i);
66 if (lookup != datBegin[i] || lookup != tdaBegin[i] || lookup != *datIter || lookup != *tdaIter)
67 {
68 std::cerr << "Mismatch at " << i << ":"
69 << " GetValue(i)=" << lookup << " datBegin[i]=" << datBegin[i]
70 << " tdaBegin[i]=" << tdaBegin[i] << " *datIter=" << *datIter
71 << " *tdaIter=" << *tdaIter << std::endl;
72 return EXIT_FAILURE;
73 }
74 ++datIter;

Callers

nothing calls this directly

Calls 13

assertFunction · 0.50
FastDownCastFunction · 0.50
SetNumberOfComponentsMethod · 0.45
SetNumberOfTuplesMethod · 0.45
SetValueMethod · 0.45
SetArrayMethod · 0.45
GetPointerMethod · 0.45
BeginMethod · 0.45
GetValueMethod · 0.45
StartTimerMethod · 0.45
StopTimerMethod · 0.45
GetElapsedTimeMethod · 0.45

Tested by

no test coverage detected