3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-23 00:37:36 +00:00
z3/src/test/zstring.cpp
Copilot 317dd92105 Standardize for-loop increments to prefix form (++i) (#8199)
* Initial plan

* Convert postfix to prefix increment in for loops

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Fix member variable increment conversion bug

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Update API generator to produce prefix increments

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 20:57:29 -08:00

62 lines
1.9 KiB
C++

#include "util/debug.h"
#include "util/trace.h"
#include "util/zstring.h"
#include <iostream>
// Encode and check for roundtrip all printable ASCII characters.
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);
}
}
}
// Test that control characters are properly escaped.
static void tst_control_chars_escaped() {
// Test DEL character (0x7F / 127)
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);
}
// Test a few other control characters below 0x20
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();
}