From 6904684d48773132c02346c92fbdba9b45ae6b27 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Tue, 2 Jun 2020 16:48:24 +0200 Subject: [PATCH] Reconstruction unit test --- sf-writer/test/test_ImageAssembler.cpp | 53 +++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/sf-writer/test/test_ImageAssembler.cpp b/sf-writer/test/test_ImageAssembler.cpp index 78916bb..c9bab06 100644 --- a/sf-writer/test/test_ImageAssembler.cpp +++ b/sf-writer/test/test_ImageAssembler.cpp @@ -33,4 +33,55 @@ TEST(ImageAssembler, basic_interaction) for (size_t i_pulse = 0; i_pulse < BUFFER_BLOCK_SIZE; i_pulse++) { ASSERT_EQ(metadata->is_good_image[i_pulse], 0); } -} \ No newline at end of file +} + +TEST(ImageAssembler, reconstruction) +{ + size_t n_modules = 2; + uint64_t bunch_id = 0; + + ImageAssembler assembler(n_modules); + + ASSERT_EQ(assembler.is_slot_free(bunch_id), true); + + auto buffer_block = make_unique(); + auto buffer_ptr = buffer_block.get(); + + for (size_t i_module=0; i_module < n_modules; i_module++) { + + for (size_t i_pulse=0; i_pulse < BUFFER_BLOCK_SIZE; i_pulse++) { + auto& frame_meta = buffer_block->frame[i_pulse].metadata; + + frame_meta.pulse_id = 100 + i_pulse; + frame_meta.daq_rec = 1000 + i_pulse; + frame_meta.frame_index = 10000 + i_pulse; + frame_meta.n_received_packets = JF_N_PACKETS_PER_FRAME; + + for (size_t i_pixel=0; i_pixel < MODULE_N_PIXELS; i_pixel++) { + buffer_block->frame[i_pulse].data[i_pixel] = + (i_module * 10) + (i_pixel % 100); + } + } + + assembler.process(bunch_id, i_module, buffer_ptr); + } + + ASSERT_EQ(assembler.is_slot_full(bunch_id), true); + + auto metadata = assembler.get_metadata_buffer(bunch_id); + auto data = assembler.get_data_buffer(bunch_id); + + assembler.free_slot(bunch_id); + ASSERT_EQ(assembler.is_slot_free(bunch_id), true); + + for (size_t i_pulse = 0; i_pulse < BUFFER_BLOCK_SIZE; i_pulse++) { + ASSERT_EQ(metadata->pulse_id[i_pulse], 100 + i_pulse); + ASSERT_EQ(metadata->daq_rec[i_pulse], 1000 + i_pulse); + ASSERT_EQ(metadata->frame_index[i_pulse], 10000 + i_pulse); + ASSERT_EQ(metadata->is_good_image[i_pulse], 1); + + for (size_t i_module=0; i_module < n_modules; i_module++) { + // TODO: Check assembled image. + } + } +}