blob: a9d53f896a3465aebaae29da7f66710d19802cb6 (
plain) (
tree)
|
|
#include <library/cpp/testing/gtest/gtest.h>
using namespace testing;
TEST(ProbeStateTest, Example) {
// check that our test function does not make a copy of passed argument
auto copyless = [](auto&& x) {
TProbe p(std::move(x));
p.Touch();
return p;
};
TProbeState state;
auto probe = copyless(TProbe(&state));
EXPECT_EQ(1, state.Touches);
EXPECT_THAT(state, HasCopyMoveCounts(0, 2));
}
TEST(ProbeTest, Construct) {
TProbeState state;
{
TProbe probe(&state);
EXPECT_THAT(state, IsAlive());
}
EXPECT_THAT(state, IsDead());
}
TEST(ProbeTest, Copy) {
TProbeState state;
TProbe probe(&state);
TProbe copy(probe);
EXPECT_THAT(state, HasCopyMoveCounts(1, 0));
EXPECT_THAT(state, NoAssignments());
EXPECT_THAT(state, NoMoves());
TProbe copy2 = TProbe::ExplicitlyCreateInvalidProbe();
copy2 = probe;
EXPECT_EQ(1, state.CopyAssignments);
}
TEST(ProbeTest, Move) {
TProbeState state;
TProbe probe(&state);
TProbe probe2(std::move(probe));
EXPECT_FALSE(probe.IsValid());
EXPECT_THAT(state, NoCopies());
EXPECT_THAT(state, HasCopyMoveCounts(0, 1));
TProbe probe3 = TProbe::ExplicitlyCreateInvalidProbe();
probe3 = std::move(probe2);
EXPECT_EQ(1, state.MoveAssignments);
}
|