// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause #include "vtkAOSDataArrayTemplate.h" #include "vtkAffineArray.h" #include "vtkConstantArray.h" #include "vtkDeserializer.h" #include "vtkInvoker.h" #include "vtkMarshalContext.h" #include "vtkSerializer.h" #include int TestDataArraySerDesDemangledNames(int, char*[]) { vtkNew context; vtkNew serializer; vtkNew deserializer; // not used in this test, but needed to call registrars vtkNew invoker; // same as above serializer->SetContext(context); bool success = true; if (const char* error = nullptr; !context->CallRegistrars(serializer, deserializer, invoker, &error)) { std::cerr << "Failed to call registrars: " << error << std::endl; success &= false; } vtkNew> aosArray; const auto aosArrayResult = serializer->SerializeJSON(aosArray); if (auto idIt = aosArrayResult.find("Id"); idIt != aosArrayResult.end() && idIt->is_number_unsigned()) { const auto state = context->GetState(idIt.value()); if (auto classNameIt = state.find("ClassName"); classNameIt != state.end()) { std::string className = classNameIt->get(); if (className != "vtkAOSDataArrayTemplate") { std::cerr << "Expected vtkAOSDataArrayTemplate but got " << className << std::endl; success &= false; } } else { std::cerr << "ClassName not found in serialized state." << std::endl; success &= false; } } else { std::cerr << "Id not found in serialized state." << std::endl; success &= false; } vtkNew> affineArray; affineArray->SetBackend(std::make_shared>(2.0, 1.0)); const auto affineArrayResult = serializer->SerializeJSON(affineArray); if (auto idIt = affineArrayResult.find("Id"); idIt != affineArrayResult.end() && idIt->is_number_unsigned()) { const auto state = context->GetState(idIt.value()); if (auto classNameIt = state.find("ClassName"); classNameIt != state.end()) { std::string className = classNameIt->get(); if (className != "vtkAffineArray") { std::cerr << "Expected vtkAffineArray but got " << className << std::endl; success &= false; } } else { std::cerr << "ClassName not found in serialized state." << std::endl; success &= false; } } else { std::cerr << "Id not found in serialized state." << std::endl; success &= false; } vtkNew> constantArray; constantArray->SetBackend(std::make_shared>(3.14f)); const auto constantArrayResult = serializer->SerializeJSON(constantArray); if (auto idIt = constantArrayResult.find("Id"); idIt != constantArrayResult.end() && idIt->is_number_unsigned()) { const auto state = context->GetState(idIt.value()); if (auto classNameIt = state.find("ClassName"); classNameIt != state.end()) { std::string className = classNameIt->get(); if (className != "vtkConstantArray") { std::cerr << "Expected vtkConstantArray but got " << className << std::endl; success &= false; } } else { std::cerr << "ClassName not found in serialized state." << std::endl; success &= false; } } else { std::cerr << "Id not found in serialized state." << std::endl; success &= false; } return success ? EXIT_SUCCESS : EXIT_FAILURE; }