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
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestLegacyCompositeDataReaderWriter.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.
=========================================================================*/
#include "vtkAMRGaussianPulseSource.h"
#include "vtkGenericDataObjectReader.h"
#include "vtkGenericDataObjectWriter.h"
#include "vtkNew.h"
#include "vtkOverlappingAMR.h"
#include "vtkTesting.h"
#define TEST_SUCCESS 0
#define TEST_FAILED 1
#define vtk_assert(x) \
do \
{ \
if (!(x)) \
{ \
cerr << "ERROR: Condition FAILED!! : " << #x << endl; \
return TEST_FAILED; \
} \
} while (false)
int Validate(vtkOverlappingAMR* input, vtkOverlappingAMR* result)
{
vtk_assert(input->GetNumberOfLevels() == result->GetNumberOfLevels());
vtk_assert(input->GetOrigin()[0] == result->GetOrigin()[0]);
vtk_assert(input->GetOrigin()[1] == result->GetOrigin()[1]);
vtk_assert(input->GetOrigin()[2] == result->GetOrigin()[2]);
for (unsigned int level = 0; level < input->GetNumberOfLevels(); level++)
{
vtk_assert(input->GetNumberOfDataSets(level) == result->GetNumberOfDataSets(level));
}
cout << "Audit Input" << endl;
input->Audit();
cout << "Audit Output" << endl;
result->Audit();
return TEST_SUCCESS;
}
int TestLegacyCompositeDataReaderWriter(int argc, char* argv[])
{
vtkNew<vtkTesting> testing;
testing->AddArguments(argc, argv);
vtkNew<vtkAMRGaussianPulseSource> source;
std::string filename = testing->GetTempDirectory();
filename += "/amr_data.vtk";
vtkNew<vtkGenericDataObjectWriter> writer;
writer->SetFileName(filename.c_str());
writer->SetFileTypeToASCII();
writer->SetInputConnection(source->GetOutputPort());
writer->Write();
vtkNew<vtkGenericDataObjectReader> reader;
reader->SetFileName(filename.c_str());
reader->Update();
// now valid the input and output datasets.
vtkOverlappingAMR* input = vtkOverlappingAMR::SafeDownCast(source->GetOutputDataObject(0));
vtkOverlappingAMR* result = vtkOverlappingAMR::SafeDownCast(reader->GetOutputDataObject(0));
if (Validate(input, result) == TEST_FAILED)
{
return TEST_FAILED;
}
cout << "Test Binary IO" << endl;
writer->SetFileTypeToBinary();
writer->Write();
reader->SetFileName(nullptr);
reader->SetFileName(filename.c_str());
reader->Update();
return Validate(input, vtkOverlappingAMR::SafeDownCast(reader->GetOutputDataObject(0)));
}
|