11#include "../3rdparty/catch2/catch.hpp"
12#include "../core/string_builder.hpp"
13#include "../safeguards.h"
15TEST_CASE(
"StringBuilder - basic")
20 CHECK(!builder.AnyBytesWritten());
21 CHECK(builder.GetBytesWritten() == 0);
22 CHECK(builder.GetWrittenData() ==
""sv);
27 CHECK(builder.AnyBytesWritten());
28 CHECK(builder.GetBytesWritten() == 6);
29 CHECK(builder.GetWrittenData() ==
"abcdef"sv);
31 CHECK(buffer ==
"abcdef"sv);
34TEST_CASE(
"StringBuilder - binary")
41 builder.PutUint16LE(0x201);
42 builder.PutSint16LE(-0x201);
43 builder.PutUint32LE(0x30201);
44 builder.PutSint32LE(-0x30201);
45 builder.PutUint64LE(0x7060504030201);
46 builder.PutSint64LE(-0x7060504030201);
48 CHECK(buffer ==
"\x01\xFF\x01\x02\xFF\xFD\x01\x02\x03\x00\xFF\xFD\xFC\xFF\x01\x02\x03\04\x05\x06\x07\x00\xFF\xFD\xFC\xFB\xFA\xF9\xF8\xFF"sv);
51TEST_CASE(
"StringBuilder - text")
57 builder.PutUtf8(0x1234);
59 builder.PutIntegerBase<uint32_t>(1234, 10);
61 builder.PutIntegerBase<uint32_t>(0x7FFF, 16);
63 builder.PutIntegerBase<int32_t>(-1234, 10);
65 builder.PutIntegerBase<int32_t>(-0x7FFF, 16);
67 builder.PutIntegerBase<uint64_t>(1'234'567'890'123, 10);
69 builder.PutIntegerBase<uint64_t>(0x1234567890, 16);
71 builder.PutIntegerBase<int64_t>(-1'234'567'890'123, 10);
73 builder.PutIntegerBase<int64_t>(-0x1234567890, 16);
75 CHECK(buffer ==
"a\u1234 1234 7fff -1234 -7fff 1234567890123 1234567890 -1234567890123 -1234567890"sv);
Compose data into a growing std::string.