From 4f26cb4918002ddc0697d0080233249e128229a0 Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Thu, 4 Apr 2024 11:28:58 +0200 Subject: [PATCH] Test read_cdr and take_cdr Signed-off-by: Erik Boasson --- src/ddscxx/tests/DataReader.cpp | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/ddscxx/tests/DataReader.cpp b/src/ddscxx/tests/DataReader.cpp index b3c516ed..ac647406 100644 --- a/src/ddscxx/tests/DataReader.cpp +++ b/src/ddscxx/tests/DataReader.cpp @@ -942,6 +942,41 @@ TEST_F(DataReader, readtake2) } +TEST_F(DataReader, readcdr) +{ +#if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN + const std::array encoding{0x00, 0x01, 0x00, 0x00}; + const std::vector payloadcdr{0x00,0x00,0x00,0x00, 0x01,0x00,0x00,0x00, 0x02,0x00,0x00,0x00}; +#else + const std::array encoding{0x00, 0x00, 0x00, 0x00}; + const std::vector payloadcdr{0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x02}; +#endif + dds::sub::LoanedSamples read_samples; + dds::sub::LoanedSamples take_samples; + + /* Create and write data. */ + std::vector testDataList = this->WriteData(1); + + /* Check result by reading. */ + read_samples = this->reader->read_cdr(); + dds::sub::status::DataState notReadState(dds::sub::status::SampleState::not_read(), + dds::sub::status::ViewState::new_view(), + dds::sub::status::InstanceState::alive()); + ASSERT_EQ(read_samples.begin()->data().kind(), org::eclipse::cyclonedds::topic::BlobKind::Data); + ASSERT_EQ(read_samples.begin()->data().encoding(), encoding); + ASSERT_EQ(read_samples.begin()->data().payload(), payloadcdr); + + /* Check result. */ + take_samples = this->reader->take_cdr(); + dds::sub::status::DataState readState(dds::sub::status::SampleState::read(), + dds::sub::status::ViewState::not_new_view(), + dds::sub::status::InstanceState::alive()); + ASSERT_EQ(take_samples.begin()->data().kind(), org::eclipse::cyclonedds::topic::BlobKind::Data); + ASSERT_EQ(take_samples.begin()->data().encoding(), encoding); + ASSERT_EQ(take_samples.begin()->data().payload(), payloadcdr); +} + + TEST_F(DataReader, lookup_instance) { static const uint32_t MAX_INSTANCES = 7;