osrm-backend/test/t/bool/reader_test_cases.cpp
Michael Krasnyk 68019a1fb2 Squashed 'third_party/protozero/' content from commit d5d8debf1
git-subtree-dir: third_party/protozero
git-subtree-split: d5d8debf1b17c6bb652395957b76cde7787e5377
2018-04-19 22:03:49 +03:00

142 lines
3.7 KiB
C++

#include <test.hpp>
namespace TestBoolean {
enum class Test : protozero::pbf_tag_type {
required_bool_b = 1
};
} // end namespace TestBoolean
TEST_CASE("read bool field using pbf_reader: false") {
const std::string buffer = load_data("bool/data-false");
protozero::pbf_reader item{buffer};
REQUIRE(item.next());
REQUIRE_FALSE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_reader: true") {
const std::string buffer = load_data("bool/data-true");
protozero::pbf_reader item{buffer};
REQUIRE(item.next());
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_reader: also true") {
const std::string buffer = load_data("bool/data-also-true");
protozero::pbf_reader item{buffer};
REQUIRE(item.next(1));
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_reader: still true") {
const std::string buffer = load_data("bool/data-still-true");
protozero::pbf_reader item{buffer};
REQUIRE(item.next(1));
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_message: false") {
const std::string buffer = load_data("bool/data-false");
protozero::pbf_message<TestBoolean::Test> item{buffer};
REQUIRE(item.next());
REQUIRE_FALSE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_message: true") {
const std::string buffer = load_data("bool/data-true");
protozero::pbf_message<TestBoolean::Test> item{buffer};
REQUIRE(item.next());
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_message: also true") {
const std::string buffer = load_data("bool/data-also-true");
protozero::pbf_message<TestBoolean::Test> item{buffer};
REQUIRE(item.next(TestBoolean::Test::required_bool_b));
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("read bool field using pbf_message: still true") {
const std::string buffer = load_data("bool/data-still-true");
protozero::pbf_message<TestBoolean::Test> item{buffer};
REQUIRE(item.next(TestBoolean::Test::required_bool_b));
REQUIRE(item.get_bool());
REQUIRE_FALSE(item.next());
}
TEST_CASE("write bool field using pbf_writer") {
std::string buffer;
protozero::pbf_writer pw{buffer};
SECTION("false") {
pw.add_bool(1, false);
REQUIRE(buffer == load_data("bool/data-false"));
}
SECTION("true") {
pw.add_bool(1, true);
REQUIRE(buffer == load_data("bool/data-true"));
}
}
TEST_CASE("write bool field using pbf_builder") {
std::string buffer;
protozero::pbf_builder<TestBoolean::Test> pw{buffer};
SECTION("false") {
pw.add_bool(TestBoolean::Test::required_bool_b, false);
REQUIRE(buffer == load_data("bool/data-false"));
}
SECTION("true") {
pw.add_bool(TestBoolean::Test::required_bool_b, true);
REQUIRE(buffer == load_data("bool/data-true"));
}
}
TEST_CASE("write bool field using moved pbf_builder") {
std::string buffer;
protozero::pbf_builder<TestBoolean::Test> pw2{buffer};
REQUIRE(pw2.valid());
protozero::pbf_builder<TestBoolean::Test> pw{std::move(pw2)};
REQUIRE(pw.valid());
REQUIRE_FALSE(pw2.valid()); // NOLINT(hicpp-invalid-access-moved, bugprone-use-after-move)
SECTION("false") {
pw.add_bool(TestBoolean::Test::required_bool_b, false);
REQUIRE(buffer == load_data("bool/data-false"));
}
SECTION("true") {
pw.add_bool(TestBoolean::Test::required_bool_b, true);
REQUIRE(buffer == load_data("bool/data-true"));
}
}