First Commit
This commit is contained in:
commit
dbdc5bcc4a
1791 files changed
+489451
No files matched your search
@@ -0,0 +1,61 @@
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
|
||||
#include <pqxx/transaction>
|
||||
|
||||
#include "test_helpers.hxx"
|
||||
|
||||
|
||||
using namespace pqxx;
|
||||
|
||||
|
||||
// Example program for libpqxx. Test binary string functionality.
|
||||
namespace
|
||||
{
|
||||
void test_062()
|
||||
{
|
||||
connection conn;
|
||||
work tx{conn};
|
||||
|
||||
std::string const TestStr{
|
||||
"Nasty\n\030Test\n\t String with \200\277 weird bytes "
|
||||
"\r\0 and Trailer\\\\\0"};
|
||||
|
||||
tx.exec0("CREATE TEMP TABLE pqxxbin (binfield bytea)");
|
||||
|
||||
std::string const Esc{tx.esc_raw(std::basic_string<std::byte>{
|
||||
reinterpret_cast<std::byte const *>(std::data(TestStr)),
|
||||
std::size(TestStr)})};
|
||||
|
||||
tx.exec0("INSERT INTO pqxxbin VALUES ('" + Esc + "')");
|
||||
|
||||
result R{tx.exec("SELECT * from pqxxbin")};
|
||||
tx.exec0("DELETE FROM pqxxbin");
|
||||
|
||||
auto const B{R.at(0).at(0).as<std::basic_string<std::byte>>()};
|
||||
|
||||
PQXX_CHECK(not std::empty(B), "Binary string became empty in conversion.");
|
||||
|
||||
PQXX_CHECK_EQUAL(
|
||||
std::size(B), std::size(TestStr), "Binary string was mangled.");
|
||||
|
||||
std::basic_string<std::byte>::const_iterator c;
|
||||
std::basic_string<std::byte>::size_type i;
|
||||
for (i = 0, c = std::begin(B); i < std::size(B); ++i, ++c)
|
||||
{
|
||||
PQXX_CHECK(c != std::end(B), "Premature end to binary string.");
|
||||
|
||||
char const x{TestStr.at(i)}, y{char(B.at(i))}, z{char(std::data(B)[i])};
|
||||
|
||||
PQXX_CHECK_EQUAL(
|
||||
std::string(&x, 1), std::string(&y, 1), "Binary string byte changed.");
|
||||
|
||||
PQXX_CHECK_EQUAL(
|
||||
std::string(&y, 1), std::string(&z, 1),
|
||||
"Inconsistent byte at offset " + to_string(i) + ".");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PQXX_REGISTER_TEST(test_062);
|
||||
} // namespace
|
||||
Reference in new issue
Block a user