85 lines
1.4 KiB
C++
85 lines
1.4 KiB
C++
#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");
|
|
}
|