basedOpinionated utility library |
git clone git://git.dimitrijedobrota.com/based.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
buffer_test.cpp (1862B)
0 #define CATCH_CONFIG_RUNTIME_STATIC_REQUIRE
2 #include "based/utility/buffer.hpp"
4 #include <catch2/catch_test_macros.hpp>
6 #include "based/types/literals.hpp"
8 template struct based::buffer<sizeof(void*)>;
10 TEST_CASE("valid type", "[template/buffer]")
11 {
12 SECTION("small buffer")
13 {
14 using buffer = based::buffer<sizeof(based::u8)>;
15 STATIC_REQUIRE(buffer::valid_type<based::u8>());
16 STATIC_REQUIRE_FALSE(buffer::valid_type<based::size_t>());
18 STATIC_REQUIRE_FALSE(buffer::valid_type<char[5]>()); // NOLINT(*array*)
19 }
21 SECTION("big buffer")
22 {
23 using buffer = based::buffer<sizeof(based::size_t), alignof(based::size_t)>;
24 STATIC_REQUIRE(buffer::valid_type<based::u8>());
25 STATIC_REQUIRE(buffer::valid_type<based::size_t>());
27 STATIC_REQUIRE_FALSE(buffer::valid_type<char[5]>()); // NOLINT(*array*)
28 }
29 }
31 TEST_CASE("buffer", "[template/buffer]")
32 {
33 using namespace based::literals; // NOLINT(*namespace*)
34 using buffer = based::buffer<sizeof(based::size_t)>;
36 static constexpr auto value = 8_u8;
37 buffer buf(std::in_place_type<based::u8>, value);
39 REQUIRE(*buf.as<based::u8>() == value);
41 SECTION("emplace")
42 {
43 static constexpr auto new_value = 10_u16;
44 buf.emplace<based::u16>(new_value);
46 REQUIRE(*buf.as<based::u16>() == new_value);
47 }
49 SECTION("swap")
50 {
51 static constexpr auto new_value = 10_u16;
52 buffer new_buf(std::in_place_type<based::u16>, new_value);
53 buf.swap(new_buf);
55 REQUIRE(*buf.as<based::u16>() == new_value);
56 REQUIRE(*new_buf.as<based::u8>() == value);
57 }
58 }
60 TEST_CASE("const buffer", "[template/buffer]")
61 {
62 using namespace based::literals; // NOLINT(*namespace*)
63 using buffer = based::buffer<sizeof(based::size_t)>;
65 static constexpr auto value = 8_u8;
66 const buffer buf(std::in_place_type<based::u8>, value);
68 REQUIRE(*buf.as<based::u8>() == value);
69 }