diff --git a/core-writer/test/test_H5WriteModule.cpp b/core-writer/test/test_H5WriteModule.cpp index 575e31d..cbe7ba2 100644 --- a/core-writer/test/test_H5WriteModule.cpp +++ b/core-writer/test/test_H5WriteModule.cpp @@ -1,7 +1,6 @@ #include "gtest/gtest.h" #include "H5WriteModule.hpp" -#include #include #include "RingBuffer.hpp" @@ -9,14 +8,57 @@ using namespace std; -void generate_frames(RingBuffer& ring_buffer) +// Shape * 2 bytes/value (uint16_t) +size_t image_n_bytes = 1024*2*2; + +void generate_frames(RingBuffer& ring_buffer, int n_frames) { - // TODO: FIll the ring_buffer with test data. + size_t y_length = 2; + size_t x_length = 1024; + + for (int i_frame=0; i_frame < n_frames; i_frame++) { + + FrameMetadata metadata = { + 0, // size_t buffer_slot_index; + 0, // size_t frame_bytes_size; + static_cast(i_frame), // uint64_t frame_index; + "little", // std::string endianness; + "uint16", //std::string type; + {y_length, x_length} // std::vector frame_shape; + }; + + auto ptr_metadata = make_shared(metadata); + auto ptr_buffer = ring_buffer.reserve(ptr_metadata); + + for (size_t y=0; y(i_frame); + } + } + + ring_buffer.commit(ptr_metadata); + } } TEST(H5WriteModule, basic_interaction) { TestH5Format format("start_dataset"); + RingBuffer ring_buffer(10); + ring_buffer.initialize(image_n_bytes); + H5WriteModule h5_write_module(ring_buffer, {}, format); + + h5_write_module.start_writing("ignore_out.h5", 5); + generate_frames(ring_buffer, 5); + + this_thread::sleep_for(chrono::milliseconds(100)); + + // Stop should never throw an exception. + h5_write_module.stop_writing(); + EXPECT_NO_THROW(h5_write_module.stop_writing()); + + EXPECT_TRUE(ring_buffer.is_empty()); } \ No newline at end of file