Select Git revision
test_misc.cpp
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_misc.cpp 2.75 KiB
/*
*
* This file is a part of the CaosDB Project.
*
* Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com>
* Copyright (C) 2021 IndiScale GmbH <info@indiscale.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestFactoryImpl
#include <gtest/gtest_pred_impl.h> // for Test, TestInfo, EXPECT_EQ, TEST
#include <iostream> // for cout, <<
#include <string> // for string
#include <utility> // for move
namespace caosdb {
class TestClass {
public:
~TestClass() = default;
TestClass(TestClass &&other) = default;
TestClass(const TestClass &other);
TestClass();
explicit TestClass(std::string member);
auto operator=(const TestClass &other) -> TestClass &;
auto operator=(TestClass &&other) -> TestClass & = default;
[[nodiscard]] auto ToString() const -> std::string;
std::string member;
};
TestClass::TestClass() { std::cout << "Constructor TestClass(): " << ToString() << "\n"; }
TestClass::TestClass(std::string member) : member(std::move(member)) {
std::cout << "Constructor TestClass(const std:string &): " << ToString() << "\n";
}
TestClass::TestClass(const TestClass &other) : member(other.member) {
std::cout << "Copy Constructor TestClass(const TestClass &): " << ToString() << "\n";
}
auto TestClass::operator=(const TestClass &other) -> TestClass & {
std::cout << "Copy assignment (" << ToString() << "->";
if (this != &other) {
this->member = other.member;
}
std::cout << ToString() << ")\n";
return *this;
}
auto TestClass::ToString() const -> std::string { return "TestClass(" + member + ")"; }
TEST(test_misc, test_move) {
TestClass test_class1;
std::cout << "test_class1: " << test_class1.ToString() << "\n";
TestClass test_class2 = test_class1;
std::cout << "test_class2: " << test_class2.ToString() << "\n";
const TestClass test_class3("member3");
std::cout << "test_class3: " << test_class3.ToString() << "\n";
TestClass test_class4 = test_class3;
std::cout << "test_class4: " << test_class4.ToString() << "\n";
}
} // namespace caosdb