1 2 #include <test.hpp> 3 4 TEST_CASE("read string field using get_string: empty") { 5 const std::string buffer = load_data("string/data-empty"); 6 7 protozero::pbf_reader item{buffer}; 8 9 REQUIRE(item.next()); 10 REQUIRE(item.get_string().empty()); 11 REQUIRE_FALSE(item.next()); 12 } 13 14 TEST_CASE("read string field using get_string: one") { 15 const std::string buffer = load_data("string/data-one"); 16 17 protozero::pbf_reader item{buffer}; 18 19 REQUIRE(item.next()); 20 REQUIRE(item.get_string() == "x"); 21 REQUIRE_FALSE(item.next()); 22 } 23 24 TEST_CASE("read string field using get_string: string") { 25 const std::string buffer = load_data("string/data-string"); 26 27 protozero::pbf_reader item{buffer}; 28 29 REQUIRE(item.next()); 30 REQUIRE(item.get_string() == "foobar"); 31 REQUIRE_FALSE(item.next()); 32 } 33 34 TEST_CASE("read string field using get_string: end of buffer") { 35 const std::string buffer = load_data("string/data-string"); 36 37 for (std::string::size_type i = 1; i < buffer.size(); ++i) { 38 protozero::pbf_reader item{buffer.data(), i}; 39 REQUIRE(item.next()); 40 REQUIRE_THROWS_AS(item.get_string(), protozero::end_of_buffer_exception); 41 } 42 } 43 44 TEST_CASE("read string field using get_view: empty") { 45 const std::string buffer = load_data("string/data-empty"); 46 47 protozero::pbf_reader item{buffer}; 48 49 REQUIRE(item.next()); 50 const auto v = item.get_view(); 51 REQUIRE(v.empty()); 52 REQUIRE_FALSE(item.next()); 53 } 54 55 TEST_CASE("read string field using get_view: one") { 56 const std::string buffer = load_data("string/data-one"); 57 58 protozero::pbf_reader item{buffer}; 59 60 REQUIRE(item.next()); 61 const auto v = item.get_view(); 62 REQUIRE(*v.data() == 'x'); 63 REQUIRE(v.size() == 1); 64 REQUIRE_FALSE(item.next()); 65 } 66 67 TEST_CASE("read string field using get_view: string") { 68 const std::string buffer = load_data("string/data-string"); 69 70 protozero::pbf_reader item{buffer}; 71 72 REQUIRE(item.next()); 73 REQUIRE(std::string(item.get_view()) == "foobar"); 74 REQUIRE_FALSE(item.next()); 75 } 76 77 TEST_CASE("read string field using get_view: end of buffer") { 78 const std::string buffer = load_data("string/data-string"); 79 80 for (std::string::size_type i = 1; i < buffer.size(); ++i) { 81 protozero::pbf_reader item{buffer.data(), i}; 82 REQUIRE(item.next()); 83 REQUIRE_THROWS_AS(item.get_view(), protozero::end_of_buffer_exception); 84 } 85 } 86 87 TEST_CASE("write string field") { 88 std::string buffer_test; 89 protozero::pbf_writer pbf_test{buffer_test}; 90 91 SECTION("empty") { 92 pbf_test.add_string(1, ""); 93 REQUIRE(buffer_test == load_data("string/data-empty")); 94 } 95 96 SECTION("one") { 97 pbf_test.add_string(1, "x"); 98 REQUIRE(buffer_test == load_data("string/data-one")); 99 } 100 101 SECTION("string") { 102 pbf_test.add_string(1, "foobar"); 103 REQUIRE(buffer_test == load_data("string/data-string")); 104 } 105 } 106 107