diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/testing/gtest_extensions/ut/probe_ut.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/testing/gtest_extensions/ut/probe_ut.cpp')
-rw-r--r-- | library/cpp/testing/gtest_extensions/ut/probe_ut.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/library/cpp/testing/gtest_extensions/ut/probe_ut.cpp b/library/cpp/testing/gtest_extensions/ut/probe_ut.cpp new file mode 100644 index 0000000000..a9d53f896a --- /dev/null +++ b/library/cpp/testing/gtest_extensions/ut/probe_ut.cpp @@ -0,0 +1,54 @@ +#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); +} |