pgLab/tests/PgsqlTests/tst_Pgsql_Params.cpp

86 lines
1.4 KiB
C++
Raw Permalink Normal View History

#include <gtest/gtest.h>
#include <gmock/gmock-matchers.h>
#include <string>
#include <utility>
#include <vector>
#include "Pgsql_Params.h"
#include "PrintTo_Qt.h"
using namespace testing;
using namespace Pgsql;
namespace {
void expectValues(const Params &p, const std::vector<std::string> &expected)
{
ASSERT_EQ(p.size(), static_cast<int>(expected.size()));
for (int i = 0; i < p.size(); ++i) {
ASSERT_NE(p.values()[i], nullptr);
EXPECT_STREQ(p.values()[i], expected[i].c_str());
}
}
}
TEST(Pgsql_Params, CopyAssignIntoNonEmpty)
{
Params src;
src.add("a");
src.add("bb");
Params dst;
dst.add("x");
dst.add("y");
dst.add("z");
dst = src;
expectValues(dst, {"a", "bb"});
expectValues(src, {"a", "bb"});
}
TEST(Pgsql_Params, CopyAssignIntoEmpty)
{
Params src;
src.add("a");
src.add("bb");
Params dst;
dst = src;
expectValues(dst, {"a", "bb"});
}
TEST(Pgsql_Params, MoveAssignIntoNonEmpty)
{
Params src;
src.add("a");
src.add("bb");
Params dst;
dst.add("x");
dst.add("y");
dst.add("z");
dst = std::move(src);
expectValues(dst, {"a", "bb"});
}
TEST(Pgsql_Params, CopyConstructorDoesNotAliasSource)
{
Params src;
src.add("abc");
Params dst(src);
src.clear();
expectValues(dst, {"abc"});
}
TEST(Pgsql_Params, CopyPreservesNull)
{
Params src;
src.add(std::optional<std::string>{});
src.add("v");
Params dst(src);
ASSERT_EQ(dst.size(), 2);
EXPECT_EQ(dst.values()[0], nullptr);
EXPECT_STREQ(dst.values()[1], "v");
}