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 104 105
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
// .NAME Test of vtkTecplotReader
// .SECTION Description
//
#include "vtkDebugLeaks.h"
#include "vtkTecplotReader.h"
#include "vtkActor.h"
#include "vtkArrayIterator.h"
#include "vtkArrayIteratorTemplate.h"
#include "vtkCallbackCommand.h"
#include "vtkCamera.h"
#include "vtkCompositeDataGeometryFilter.h"
#include "vtkCompositeDataPipeline.h"
#include "vtkDirectory.h"
#include "vtkPointData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRegressionTestImage.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
#include "vtkStringArray.h"
#include "vtkTestUtilities.h"
#include <string>
#include <vtksys/SystemTools.hxx>
class vtkErrorObserver
{
public:
static void Reset()
{
HasError = false;
ErrorMessage.clear();
}
static void OnError(vtkObject* vtkNotUsed(caller), unsigned long int vtkNotUsed(eventId),
void* vtkNotUsed(clientData), void* callData)
{
HasError = true;
char* pString = (char*)callData;
if (pString)
{
ErrorMessage = pString;
}
}
static bool HasError;
static std::string ErrorMessage;
};
bool vtkErrorObserver::HasError = false;
std::string vtkErrorObserver::ErrorMessage = std::string();
int TestTecplotReader2(int argc, char* argv[])
{
char* dataRoot = vtkTestUtilities::GetDataRoot(argc, argv);
const std::string tecplotDir = std::string(dataRoot) + "/Data/TecPlot/";
if (argc < 2)
{
return EXIT_SUCCESS;
}
const char* filename = argv[1];
vtkNew<vtkCallbackCommand> cmd;
cmd->SetCallback(&(vtkErrorObserver::OnError));
const std::string ext = vtksys::SystemTools::GetFilenameLastExtension(filename);
if (ext != ".dat")
{
return EXIT_FAILURE;
}
vtkErrorObserver::Reset();
vtkNew<vtkTecplotReader> r;
r->AddObserver("ErrorEvent", cmd);
r->SetFileName((tecplotDir + filename).c_str());
r->Update();
r->RemoveAllObservers();
vtkMultiBlockDataSet* ds = r->GetOutput();
if (ds == nullptr)
{
cerr << "Failed to read data set from " << filename << endl;
return EXIT_FAILURE;
}
if (vtkErrorObserver::HasError)
{
cerr << "Failed to read from " << filename << endl;
if (!vtkErrorObserver::ErrorMessage.empty())
{
cerr << "Error message: " << vtkErrorObserver::ErrorMessage << endl;
}
return EXIT_FAILURE;
}
cout << filename << " was read without errors." << endl;
delete[] dataRoot;
return EXIT_SUCCESS;
}
|