25 #ifndef TESSERACT_COMMON_UNIT_TEST_UTILS_H
26 #define TESSERACT_COMMON_UNIT_TEST_UTILS_H
30 #include <gtest/gtest.h>
31 #include <boost/serialization/shared_ptr.hpp>
47 template <
typename SerializableType>
52 EXPECT_TRUE(tesseract_common::Serialization::toArchiveFileXML<SerializableType>(
object, file_path));
54 SerializableType nobject{ tesseract_common::Serialization::fromArchiveFileXML<SerializableType>(file_path) };
55 EXPECT_FALSE(
object != nobject);
61 tesseract_common::Serialization::toArchiveFileXML<SerializableType>(
object, file_path, typename_string));
63 SerializableType nobject{ tesseract_common::Serialization::fromArchiveFileXML<SerializableType>(file_path) };
64 EXPECT_FALSE(
object != nobject);
69 EXPECT_TRUE(tesseract_common::Serialization::toArchiveFileBinary<SerializableType>(
object, file_path));
71 SerializableType nobject{ tesseract_common::Serialization::fromArchiveFileBinary<SerializableType>(file_path) };
72 EXPECT_FALSE(
object != nobject);
78 tesseract_common::Serialization::toArchiveFileBinary<SerializableType>(
object, file_path, typename_string));
80 SerializableType nobject{ tesseract_common::Serialization::fromArchiveFileBinary<SerializableType>(file_path) };
81 EXPECT_FALSE(
object != nobject);
85 std::string object_string = tesseract_common::Serialization::toArchiveStringXML<SerializableType>(
object);
86 EXPECT_FALSE(object_string.empty());
88 SerializableType nobject{ tesseract_common::Serialization::fromArchiveStringXML<SerializableType>(object_string) };
89 EXPECT_FALSE(
object != nobject);
93 std::string object_string =
94 tesseract_common::Serialization::toArchiveStringXML<SerializableType>(
object, typename_string);
95 EXPECT_FALSE(object_string.empty());
97 SerializableType nobject{ tesseract_common::Serialization::fromArchiveStringXML<SerializableType>(object_string) };
98 EXPECT_FALSE(
object != nobject);
102 std::vector<std::uint8_t> object_data =
103 tesseract_common::Serialization::toArchiveBinaryData<SerializableType>(
object);
104 EXPECT_FALSE(object_data.empty());
106 SerializableType nobject{ tesseract_common::Serialization::fromArchiveBinaryData<SerializableType>(object_data) };
107 EXPECT_FALSE(
object != nobject);
111 std::vector<std::uint8_t> object_data =
112 tesseract_common::Serialization::toArchiveBinaryData<SerializableType>(
object, typename_string);
113 EXPECT_FALSE(object_data.empty());
115 SerializableType nobject{ tesseract_common::Serialization::fromArchiveBinaryData<SerializableType>(object_data) };
116 EXPECT_FALSE(
object != nobject);
127 template <
typename SerializableType>
135 auto nobject = tesseract_common::Serialization::fromArchiveFileXML<std::shared_ptr<SerializableType>>(file_path);
136 EXPECT_FALSE(*
object != *nobject);
144 auto nobject = tesseract_common::Serialization::fromArchiveFileBinary<std::shared_ptr<SerializableType>>(file_path);
145 EXPECT_FALSE(*
object != *nobject);
149 std::string object_string =
150 tesseract_common::Serialization::toArchiveStringXML<std::shared_ptr<SerializableType>>(object, typename_string);
151 EXPECT_FALSE(object_string.empty());
154 tesseract_common::Serialization::fromArchiveStringXML<std::shared_ptr<SerializableType>>(object_string);
155 EXPECT_FALSE(*
object != *nobject);
159 std::vector<std::uint8_t> object_data =
160 tesseract_common::Serialization::toArchiveBinaryData<std::shared_ptr<SerializableType>>(object,
162 EXPECT_FALSE(object_data.empty());
165 tesseract_common::Serialization::fromArchiveBinaryData<std::shared_ptr<SerializableType>>(object_data);
166 EXPECT_FALSE(*
object != *nobject);
177 template <
typename SerializableTypeBase,
typename SerializableTypeDerived>
179 const std::string& typename_string)
187 tesseract_common::Serialization::fromArchiveFileXML<std::shared_ptr<SerializableTypeBase>>(file_path);
188 auto nobject_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(nobject);
190 auto object_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(
object);
191 EXPECT_FALSE(*object_derived != *nobject_derived);
200 tesseract_common::Serialization::fromArchiveFileBinary<std::shared_ptr<SerializableTypeBase>>(file_path);
201 auto nobject_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(nobject);
203 auto object_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(
object);
204 EXPECT_FALSE(*object_derived != *nobject_derived);
208 std::string object_string =
209 tesseract_common::Serialization::toArchiveStringXML<std::shared_ptr<SerializableTypeBase>>(object,
211 EXPECT_FALSE(object_string.empty());
214 tesseract_common::Serialization::fromArchiveStringXML<std::shared_ptr<SerializableTypeBase>>(object_string);
215 auto nobject_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(nobject);
217 auto object_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(
object);
218 EXPECT_FALSE(*object_derived != *nobject_derived);
222 std::vector<std::uint8_t> object_data =
223 tesseract_common::Serialization::toArchiveBinaryData<std::shared_ptr<SerializableTypeBase>>(object,
225 EXPECT_FALSE(object_data.empty());
228 tesseract_common::Serialization::fromArchiveBinaryData<std::shared_ptr<SerializableTypeBase>>(object_data);
229 auto nobject_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(nobject);
231 auto object_derived = std::dynamic_pointer_cast<SerializableTypeDerived>(
object);
232 EXPECT_FALSE(*object_derived != *nobject_derived);
243 template <
typename SerializableTypeStored>
245 const std::string& typename_string)
249 EXPECT_TRUE(tesseract_common::Serialization::toArchiveFileXML<tesseract_common::AnyPoly>(
object, file_path));
251 auto nobject = tesseract_common::Serialization::fromArchiveFileXML<tesseract_common::AnyPoly>(file_path);
252 const auto& nobject_stored = nobject.as<SerializableTypeStored>();
254 auto object_stored =
object.as<SerializableTypeStored>();
255 EXPECT_FALSE(*object_stored != *nobject_stored);
260 EXPECT_TRUE(tesseract_common::Serialization::toArchiveFileBinary<tesseract_common::AnyPoly>(
object, file_path));
262 auto nobject = tesseract_common::Serialization::fromArchiveFileBinary<tesseract_common::AnyPoly>(file_path);
263 auto nobject_stored = nobject.as<SerializableTypeStored>();
265 auto object_stored =
object.as<SerializableTypeStored>();
266 EXPECT_FALSE(*object_stored != *nobject_stored);
270 std::string object_string =
271 tesseract_common::Serialization::toArchiveStringXML<tesseract_common::AnyPoly>(
object, typename_string);
272 EXPECT_FALSE(object_string.empty());
274 auto nobject = tesseract_common::Serialization::fromArchiveStringXML<tesseract_common::AnyPoly>(object_string);
275 auto nobject_stored = nobject.as<SerializableTypeStored>();
277 auto object_stored =
object.as<SerializableTypeStored>();
278 EXPECT_FALSE(*object_stored != *nobject_stored);
282 std::vector<std::uint8_t> object_data =
283 tesseract_common::Serialization::toArchiveBinaryData<tesseract_common::AnyPoly>(
object, typename_string);
284 EXPECT_FALSE(object_data.empty());
286 auto nobject = tesseract_common::Serialization::fromArchiveBinaryData<tesseract_common::AnyPoly>(object_data);
287 auto nobject_stored = nobject.as<SerializableTypeStored>();
289 auto object_stored =
object.as<SerializableTypeStored>();
290 EXPECT_FALSE(*object_stored != *nobject_stored);
294 #endif // TESSERACT_COMMON_UTILS_H