11#include "../3rdparty/catch2/catch.hpp"
12#include "../core/string_inplace.hpp"
13#include "../safeguards.h"
15TEST_CASE(
"InPlaceReplacement")
17 std::array<char, 4> buffer{1, 2, 3, 4};
20 CHECK(!inplace.builder.AnyBytesWritten());
21 CHECK(inplace.builder.GetBytesWritten() == 0);
22 CHECK(inplace.builder.GetWrittenData() ==
""sv);
23 CHECK(!inplace.builder.AnyBytesUnused());
24 CHECK(inplace.builder.GetBytesUnused() == 0);
25 CHECK(!inplace.consumer.AnyBytesRead());
26 CHECK(inplace.consumer.GetBytesRead() == 0);
27 CHECK(inplace.consumer.AnyBytesLeft());
28 CHECK(inplace.consumer.GetBytesLeft() == 4);
30 CHECK(inplace.consumer.ReadUint16LE() == 0x201);
32 CHECK(inplace.builder.GetBytesWritten() == 0);
33 CHECK(inplace.builder.GetBytesUnused() == 2);
34 CHECK(inplace.consumer.GetBytesRead() == 2);
35 CHECK(inplace.consumer.GetBytesLeft() == 2);
37 inplace.builder.PutUint8(11);
39 CHECK(inplace.builder.GetBytesWritten() == 1);
40 CHECK(inplace.builder.GetBytesUnused() == 1);
41 CHECK(inplace.consumer.GetBytesRead() == 2);
42 CHECK(inplace.consumer.GetBytesLeft() == 2);
44 inplace.builder.PutUint8(12);
46 CHECK(inplace.builder.GetBytesWritten() == 2);
47 CHECK(inplace.builder.GetBytesUnused() == 0);
48 CHECK(inplace.consumer.GetBytesRead() == 2);
49 CHECK(inplace.consumer.GetBytesLeft() == 2);
51 CHECK(buffer[0] == 11);
52 CHECK(buffer[1] == 12);
53 CHECK(buffer[2] == 3);
54 CHECK(buffer[3] == 4);
Compose data into a fixed size buffer, which is consumed at the same time.