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
|
#include <vtkPolyData.h>
#include <vtkPolyDataReader.h>
#include <vtkTestErrorObserver.h>
#include <vtkTesting.h>
// A test for different error code path in the polydata reader
int TestLegacyPolyDataReaderErrorCodePath(int argc, char* argv[])
{
vtkNew<vtkTesting> testing;
testing->AddArguments(argc, argv);
// ==========================================================
// Test for https://gitlab.kitware.com/vtk/vtk/-/issues/18689
std::string filename = testing->GetDataRoot();
filename += "/Data/invalid_polydata.vtk";
// Create the reader
vtkNew<vtkPolyDataReader> reader;
reader->SetFileName(filename.c_str());
// Create an error observer
vtkNew<vtkTest::ErrorObserver> errorObserver;
reader->AddObserver(vtkCommand::ErrorEvent, errorObserver);
// Read the file
reader->Update();
// Check error message
int status = errorObserver->CheckErrorMessage("Error reading ascii cell data! for file");
if (status != 0)
{
std::cerr << "Expecting specific error messages but could not find them" << std::endl;
return EXIT_FAILURE;
}
// Check output
vtkPolyData* pd = reader->GetOutput();
if (pd->GetNumberOfPoints() != 4469)
{
std::cerr << "Expecting 4460 points after reading an invalid polydata, but got "
<< pd->GetNumberOfPoints() << std::endl;
return EXIT_FAILURE;
}
if (pd->GetNumberOfCells() != 0)
{
std::cerr << "Expecting no cells after reading an invalid polydata, but got "
<< pd->GetNumberOfCells() << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
|