#include "util/debug.h"
#include "util/trace.h"
#include "util/zstring.h"
#include <iostream>
static void tst_ascii_roundtrip() {
unsigned ascii_min = 0x20; unsigned ascii_max = 0x7E;
for (unsigned i = ascii_min; i <= ascii_max; ++i) {
zstring input(i);
std::string expected(1, i);
bool roundtrip_ok = input.encode() == expected;
if (!roundtrip_ok) {
std::cout << "Failed to roundtrip printable ASCII char: " << expected
<< "\n" << std::flush;
ENSURE(roundtrip_ok);
}
}
}
static void tst_control_chars_escaped() {
zstring del_char(0x7Fu);
std::string del_encoded = del_char.encode();
bool del_ok = del_encoded == "\\u{7f}";
if (!del_ok) {
std::cout << "Failed to escape DEL character (0x7F): got '" << del_encoded
<< "', expected '\\u{7f}'\n" << std::flush;
ENSURE(del_ok);
}
zstring null_char(0x00u);
std::string null_encoded = null_char.encode();
bool null_ok = null_encoded == "\\u{0}";
if (!null_ok) {
std::cout << "Failed to escape NULL character (0x00): got '" << null_encoded
<< "', expected '\\u{0}'\n" << std::flush;
ENSURE(null_ok);
}
zstring tab_char(0x09u);
std::string tab_encoded = tab_char.encode();
bool tab_ok = tab_encoded == "\\u{9}";
if (!tab_ok) {
std::cout << "Failed to escape TAB character (0x09): got '" << tab_encoded
<< "', expected '\\u{9}'\n" << std::flush;
ENSURE(tab_ok);
}
}
void tst_zstring() {
tst_ascii_roundtrip();
tst_control_chars_escaped();
}