1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestTecPlotReader.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME Test of vtkTecplotReader
// .SECTION Description
//
#include "vtkOBJReader.h"
#include "vtkDebugLeaks.h"
#include "vtkCellArray.h"
#include "vtkPointData.h"
#include "vtkSmartPointer.h"
#include "vtkTestUtilities.h"
int TestOBJReaderRelative( int argc, char *argv[] )
{
int retVal = 0;
// Create the reader.
char* fname_rel = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/relative_indices.obj");
vtkSmartPointer<vtkOBJReader> reader_rel =
vtkSmartPointer<vtkOBJReader>::New();
reader_rel->SetFileName(fname_rel);
reader_rel->Update();
delete [] fname_rel;
// Create the reader.
char* fname_abs = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/absolute_indices.obj");
vtkSmartPointer<vtkOBJReader> reader_abs =
vtkSmartPointer<vtkOBJReader>::New();
reader_abs->SetFileName(fname_abs);
reader_abs->Update();
delete [] fname_abs;
vtkPolyData *data_rel = reader_rel->GetOutput();
vtkPolyData *data_abs = reader_abs->GetOutput();
#define CHECK(obj, method) \
if (obj##_rel->method != obj##_abs->method) \
{ \
cerr << "Error: different values for " #obj "->" #method << endl; \
retVal = 1; \
}
#define CHECK_ARRAY(obj, idx) \
if (obj##_rel[idx] != obj##_abs[idx]) \
{ \
cerr << "Error: different values for " #obj "[" << (idx) << "]" << endl; \
retVal = 1; \
}
#define CHECK_SCALAR(obj) \
if (obj##_rel != obj##_abs) \
{ \
cerr << "Error: different values for " #obj << endl; \
retVal = 1; \
}
CHECK(data, GetNumberOfVerts())
CHECK(data, GetNumberOfLines())
CHECK(data, GetNumberOfCells())
CHECK(data, GetNumberOfStrips())
vtkCellArray *polys_rel = data_rel->GetPolys();
vtkCellArray *polys_abs = data_abs->GetPolys();
CHECK(polys, GetNumberOfCells());
vtkIdType npts_rel;
vtkIdType npts_abs;
vtkIdType *pts_rel;
vtkIdType *pts_abs;
polys_rel->InitTraversal();
polys_abs->InitTraversal();
while (!polys_rel->GetNextCell(npts_rel, pts_rel) &&
!polys_abs->GetNextCell(npts_abs, pts_abs))
{
CHECK_SCALAR(npts)
for (vtkIdType i = 0; i < npts_rel && i < npts_abs; ++i)
{
CHECK_ARRAY(pts, i)
}
}
#undef CHECK_SCALAR
#undef CHECK_ARRAY
#undef CHECK
return retVal;
}
|