1 2 #include <cstdint> 3 #include <string> 4 5 #include "absl/status/status.h" 6 #include "absl/status/status_matchers.h" 7 #include "absl/types/span.h" 8 #include "fuzztest/fuzztest.h" 9 #include "gmock/gmock.h" 10 #include "gtest/gtest.h" 11 #include "iamf/common/read_bit_buffer.h" 12 #include "iamf/common/write_bit_buffer.h" 13 14 namespace iamf_tools { 15 namespace { 16 17 using ::absl_testing::IsOk; 18 WriteReadString(const std::string & data)19void WriteReadString(const std::string& data) { 20 WriteBitBuffer wb(0); 21 auto write_status = wb.WriteString(data); 22 23 if (write_status.ok()) { 24 std::vector<uint8_t> source_data = wb.bit_buffer(); 25 std::unique_ptr<MemoryBasedReadBitBuffer> rb = 26 MemoryBasedReadBitBuffer::CreateFromSpan( 27 256, absl::MakeConstSpan(source_data)); 28 29 std::string read_data; 30 EXPECT_THAT(rb->ReadString(read_data), IsOk()); 31 32 EXPECT_EQ(read_data, data); 33 } 34 } 35 36 FUZZ_TEST(WriteReadFuzzTest, WriteReadString); 37 WriteReadUint8Span(const std::vector<uint8_t> & data)38void WriteReadUint8Span(const std::vector<uint8_t>& data) { 39 WriteBitBuffer wb(0); 40 auto write_status = wb.WriteUint8Span(absl::MakeConstSpan(data)); 41 42 if (write_status.ok()) { 43 std::vector<uint8_t> source_data = wb.bit_buffer(); 44 std::unique_ptr<MemoryBasedReadBitBuffer> rb = 45 MemoryBasedReadBitBuffer::CreateFromSpan( 46 256, absl::MakeConstSpan(source_data)); 47 48 std::vector<uint8_t> read_data(data.size()); 49 EXPECT_THAT(rb->ReadUint8Span(absl::MakeSpan(read_data)), IsOk()); 50 51 EXPECT_EQ(read_data, data); 52 } 53 } 54 55 FUZZ_TEST(WriteReadFuzzTest, WriteReadUint8Span); 56 57 } // namespace 58 } // namespace iamf_tools 59