diff --git a/tests/annoy_serialize.cpp b/tests/annoy_serialize.cpp index 1c55e33..fef2c41 100644 --- a/tests/annoy_serialize.cpp +++ b/tests/annoy_serialize.cpp @@ -1,11 +1,12 @@ +#include "cereal/archives/binary.hpp" #include #include #include - -#include +#include #include +#include constexpr int DIMENSIONS = 10; @@ -40,18 +41,41 @@ int main() { annoy_index.build(10); - auto bytes = annoy_index.serialize(); + std::stringstream sstream; + + cereal::BinaryOutputArchive oarchive {sstream}; + + oarchive(annoy_index); + + cereal::BinaryInputArchive iarchive {sstream}; + + AnnoyIndex_t loaded_annoy_index; + + iarchive(loaded_annoy_index); - AnnoyIndex_t annoy_index2(DIMENSIONS); + std::cout << "Loaded Annoy Index\n"; - annoy_index2.deserialize(&bytes); + const std::size_t num_items = annoy_index.get_n_items(); + const std::size_t num_items_loaded = loaded_annoy_index.get_n_items(); - std::cout << "annoy_index.get_n_items() = " << annoy_index.get_n_items() << '\n'; - std::cout << "annoy_index.get_n_trees() = " << annoy_index.get_n_trees() << '\n'; + std::cout << "Number of items in original index: " << num_items << '\n'; + std::cout << "Number of items in loaded index: " << num_items_loaded << '\n'; - std::cout << "annoy_index2.get_n_items() = " << annoy_index2.get_n_items() << '\n'; - std::cout << "annoy_index2.get_n_trees() = " << annoy_index2.get_n_trees() << '\n'; + std::cout << "Original Annoy Index\n"; + for (int index {}; index < 10; ++index) { + float* vector = new float [DIMENSIONS]; + annoy_index.get_item(index, vector); + print_vector(vector); + + delete [] vector; + } - std::cout << "(annoy_index.serialize() == annoy_index2.serialize()) = " - << (annoy_index.serialize() == annoy_index2.serialize()) << '\n'; + std::cout << "\n\nLoaded Annoy Index\n"; + for (int index {}; index < 10; ++index) { + float* vector = new float [DIMENSIONS]; + loaded_annoy_index.get_item(index, vector); + print_vector(vector); + + delete [] vector; + } }