• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)19 void 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)38 void 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