1
1
#include < msg/detail/rle_codec.hpp>
2
2
3
+ #include < stdx/compiler.hpp>
4
+
3
5
#include < catch2/catch_test_macros.hpp>
4
6
#include < catch2/matchers/catch_matchers_range_equals.hpp>
5
7
9
11
using Catch::Matchers::RangeEquals;
10
12
11
13
namespace {
12
- constexpr auto operator " " _b(unsigned long long v) -> std::byte {
14
+ CONSTEVAL auto operator " " _b(unsigned long long v) -> std::byte {
13
15
return static_cast <std::byte>(v);
14
16
}
15
17
} // namespace
@@ -24,53 +26,50 @@ TEST_CASE("rle_codec can encode all zeros", "[rle_codec]") {
24
26
using bs = stdx::bitset<10 >;
25
27
using codec = rle_codec<bs>;
26
28
27
- CHECK_THAT (codec::encode (bs{}),
28
- RangeEquals (std::to_array<std::byte>({10_b})));
29
+ CHECK_THAT (codec::encode (bs{}), RangeEquals (std::array{10_b}));
29
30
}
30
31
31
32
TEST_CASE (" rle_codec can encode all ones" , " [rle_codec]" ) {
32
33
using bs = stdx::bitset<12 >;
33
34
using codec = rle_codec<bs>;
34
35
35
- CHECK_THAT (codec::encode (~bs{}),
36
- RangeEquals (std::to_array<std::byte>({0_b, 12_b})));
36
+ CHECK_THAT (codec::encode (~bs{}), RangeEquals (std::array{0_b, 12_b}));
37
37
}
38
38
39
39
TEST_CASE (" rle_codec can encode all zeros for large bit count" , " [rle_codec]" ) {
40
40
using bs = stdx::bitset<512 >;
41
41
using codec = rle_codec<bs>;
42
42
43
- CHECK_THAT (codec::encode (bs{}), RangeEquals (std::to_array<std::byte>(
44
- {255_b, 0_b, 255_b, 0_b, 2_b}) ));
43
+ CHECK_THAT (codec::encode (bs{}),
44
+ RangeEquals (std::array {255_b, 0_b, 255_b, 0_b, 2_b}));
45
45
}
46
46
47
47
TEST_CASE (" rle_codec can encode all ones for large bit count" , " [rle_codec]" ) {
48
48
using bs = stdx::bitset<512 >;
49
49
using codec = rle_codec<bs>;
50
50
51
- CHECK_THAT (codec::encode (~bs{}), RangeEquals (std::to_array<std::byte>(
52
- {0_b, 255_b, 0_b, 255_b, 0_b, 2_b}) ));
51
+ CHECK_THAT (codec::encode (~bs{}),
52
+ RangeEquals (std::array {0_b, 255_b, 0_b, 255_b, 0_b, 2_b}));
53
53
}
54
54
55
55
TEST_CASE (" rle_codec can encode alternating bits" , " [rle_codec]" ) {
56
56
using bs = stdx::bitset<8 >;
57
57
using codec = rle_codec<bs>;
58
58
59
- CHECK_THAT (codec::encode (bs{stdx::place_bits, 0 , 2 , 4 , 6 }),
60
- RangeEquals (std::to_array<std::byte>(
61
- {0_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b}) ));
59
+ CHECK_THAT (
60
+ codec::encode (bs{stdx::place_bits, 0 , 2 , 4 , 6 }),
61
+ RangeEquals (std::array {0_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b}));
62
62
63
63
CHECK_THAT (codec::encode (bs{stdx::place_bits, 1 , 3 , 5 , 7 }),
64
- RangeEquals (std::to_array<std::byte>(
65
- {1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b})));
64
+ RangeEquals (std::array{1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b}));
66
65
}
67
66
68
67
TEST_CASE (" rle_decoder can iterate chunks 1" , " [rle_codec]" ) {
69
68
using bs = stdx::bitset<8 >;
70
69
using decoder = rle_decoder<bs>;
71
70
72
- auto rle =
73
- std::to_array<std::byte>({1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b});
71
+ auto rle = std::array{1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b, 1_b};
72
+
74
73
decoder dec{rle.data ()};
75
74
auto chunk = dec.make_chunk_enumerator ();
76
75
@@ -97,7 +96,7 @@ TEST_CASE("rle_decoder can iterate chunks 2", "[rle_codec]") {
97
96
using bs = stdx::bitset<8 >;
98
97
using decoder = rle_decoder<bs>;
99
98
100
- auto rle = std::to_array<std::byte>( {0_b, 2_b, 2_b, 2_b, 0_b, 2_b}) ;
99
+ auto rle = std::array {0_b, 2_b, 2_b, 2_b, 0_b, 2_b};
101
100
decoder dec{rle.data ()};
102
101
auto chunk = dec.make_chunk_enumerator ();
103
102
@@ -116,7 +115,7 @@ TEST_CASE("rle_decoder can iterate chunks 3", "[rle_codec]") {
116
115
using bs = stdx::bitset<1000 >;
117
116
using decoder = rle_decoder<bs>;
118
117
119
- auto rle = std::to_array<std::byte>( {255_b, 0_b, 255_b, 0_b, 255_b, 235_b}) ;
118
+ auto rle = std::array {255_b, 0_b, 255_b, 0_b, 255_b, 235_b};
120
119
decoder dec{rle.data ()};
121
120
auto chunk = dec.make_chunk_enumerator ();
122
121
@@ -133,7 +132,7 @@ TEST_CASE("rle_decoder can iterate sub-chunks", "[rle_codec]") {
133
132
using bs = stdx::bitset<8 >;
134
133
using decoder = rle_decoder<bs>;
135
134
136
- auto rle = std::to_array<std::byte>( {0_b, 2_b, 2_b, 2_b, 0_b, 2_b}) ;
135
+ auto rle = std::array {0_b, 2_b, 2_b, 2_b, 0_b, 2_b};
137
136
decoder dec{rle.data ()};
138
137
auto chunk = dec.make_chunk_enumerator ();
139
138
@@ -166,8 +165,7 @@ TEST_CASE("rle_decoder stops after num_bits", "[rle_codec]") {
166
165
using decoder = rle_decoder<bs>;
167
166
168
167
// contains extra data which should be ignored
169
- auto rle =
170
- std::to_array<std::byte>({0_b, 2_b, 2_b, 2_b, 0_b, 2_b, 255_b, 255_b});
168
+ auto rle = std::array{0_b, 2_b, 2_b, 2_b, 0_b, 2_b, 255_b, 255_b};
171
169
decoder dec{rle.data ()};
172
170
auto chunk = dec.make_chunk_enumerator ();
173
171
0 commit comments