1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#include "../c++/test/suite.hpp"
#include "../c++/buffer.hpp"
namespace {
void do_array_consistency_checks(const saw::array_buffer& buff){
SAW_EXPECT(buff.write_segment_length() == buff.write_composite_length(), "Unexpected segmented write size.");
SAW_EXPECT(buff.read_segment_length() == buff.read_composite_length(), "Unexpected segmented read size.");
}
SAW_TEST("Array Buffer Construct") {
using namespace saw;
uint64_t size = 1024u;
array_buffer buff{size};
SAW_EXPECT(buff.read_position() == 0u, "Unexpected read position");
SAW_EXPECT(buff.write_position() == 0u, "Unexpected write position");
SAW_EXPECT(buff.write_composite_length() == size, "Unexpected write size.");
SAW_EXPECT(buff.read_composite_length() == 0u, "Unexpected read size.");
do_array_consistency_checks(buff);
}
SAW_TEST("Array Buffer Write Advance") {
using namespace saw;
uint64_t size = 1024u;
array_buffer buff{size};
uint64_t advance = 256u;
buff.write_advance(advance);
SAW_EXPECT(buff.read_position() == 0u, "Unexpected read position");
SAW_EXPECT(buff.write_position() == advance, "Unexpected write position");
SAW_EXPECT(buff.read_composite_length() == advance, "Unexpected Read composite length.");
SAW_EXPECT(buff.write_composite_length() == (size-advance), "Unexpected Write composite length.");
do_array_consistency_checks(buff);
buff.write_advance(size-advance);
SAW_EXPECT(buff.write_position() == (size), "Unexpected write position");
SAW_EXPECT(buff.write_composite_length() == 0u, "Unexpected Write composite length.");
do_array_consistency_checks(buff);
}
SAW_TEST("Array Buffer Write Require Length") {
using namespace saw;
uint64_t size = 1024u;
array_buffer buff{size};
error err = buff.write_require_length(2u*size);
SAW_EXPECT(buff.read_position() == 0u, "Unexpected read position");
SAW_EXPECT(buff.write_position() == 0u, "Unexpected write position");
SAW_EXPECT(buff.read_composite_length() == 0u, "Unexpected Read composite length.");
SAW_EXPECT(buff.write_composite_length() == 2u*size, std::string{"Unexpected Write composite length. Size "} + std::to_string(buff.write_composite_length()));
do_array_consistency_checks(buff);
}
SAW_TEST("Array Buffer Write and Read Advance") {
using namespace saw;
uint64_t size = 1024u;
array_buffer buff{size};
uint64_t advance = 256u;
buff.write_advance(advance);
uint64_t read_advance = 128u;
buff.read_advance(read_advance);
SAW_EXPECT(buff.read_position() == read_advance, "Unexpected read position");
SAW_EXPECT(buff.write_position() == advance, "Unexpected write position");
SAW_EXPECT(buff.read_composite_length() == advance-read_advance, "Unexpected Read composite length.");
SAW_EXPECT(buff.write_composite_length() == (size-advance), "Unexpected Write composite length.");
do_array_consistency_checks(buff);
buff.read_advance(read_advance);
SAW_EXPECT(buff.read_position() == advance, "Unexpected read position");
SAW_EXPECT(buff.write_position() == advance, "Unexpected write position");
SAW_EXPECT(buff.read_composite_length() == 0u, "Unexpected Read composite length.");
SAW_EXPECT(buff.write_composite_length() == (size-advance), "Unexpected Write composite length.");
do_array_consistency_checks(buff);
}
}
|