1- #include < gtest/gtest.h>
21#include < glog/logging.h>
2+ #include < gtest/gtest.h>
3+ #include < stacktrace.h>
4+ #include < utilities.h>
5+
36#include < memory>
47#include < string>
5- #include < utilities.h>
6- #include < stacktrace.h>
78
89namespace test {
9- struct MemoryLeakTest : public ::testing::Test {
10- };
11- TEST_F (MemoryLeakTest, testMoveUniqueToSharedPtr){
10+ struct MemoryLeakTest : public ::testing::Test {};
11+ TEST_F (MemoryLeakTest, testMoveUniqueToSharedPtr) {
1212 google::InstallFailureSignalHandler ();
13- struct CharBuffer {
13+ struct CharBuffer {
1414 std::string s;
15- explicit CharBuffer (const std::string& s):s(s){
16- std::cout<<" Ctor" <<std::endl;
17- }
18- CharBuffer (const CharBuffer& cb):s(cb.s) {
19- std::cout<<" Copy ctor" <<std::endl;
20- }
21- ~CharBuffer () {
22- std::cout<<" Dtor" <<std::endl;
23- }
24- std::unique_ptr<CharBuffer> clone () {
25- return std::make_unique<CharBuffer>(s);
26- }
15+ explicit CharBuffer (const std::string& s) : s(s) { std::cout << " Ctor" << std::endl; }
16+ CharBuffer (const CharBuffer& cb) : s(cb.s) { std::cout << " Copy ctor" << std::endl; }
17+ ~CharBuffer () { std::cout << " Dtor" << std::endl; }
18+ std::unique_ptr<CharBuffer> clone () { return std::make_unique<CharBuffer>(s); }
2719 };
2820
2921 auto cb0 = std::make_shared<CharBuffer>(" abc" );
3022 auto cb2 = cb0->clone ();
3123 std::shared_ptr<CharBuffer> cb3 = std::move (cb2);
32- std::cout<< cb0.get ()<< std::endl;
33- std::cout<< cb2.get ()<< std::endl;
34- std::cout<< cb3.get ()<< std::endl;
35- DCHECK (cb0.get ()== nullptr );
24+ std::cout << cb0.get () << std::endl;
25+ std::cout << cb2.get () << std::endl;
26+ std::cout << cb3.get () << std::endl;
27+ DCHECK (cb0.get () == nullptr );
3628 std::string s;
3729 // google::glog_internal_namespace_::DumpStackTraceToString(&s);
38- std::cout<<s<< std::endl;
30+ std::cout << s << std::endl;
3931}
4032TEST_F (MemoryLeakTest, testNoCtor) {
41- struct A {
42- std::vector<std::shared_ptr<std::string>> data;
33+ struct A {
34+ std::vector<std::shared_ptr<std::string>> data;
4335 };
4436 auto a = std::make_shared<A>();
4537 a->data .reserve (10 );
46- for (int i= 0 ; i < 10 ; ++i) {
38+ for (int i = 0 ; i < 10 ; ++i) {
4739 auto s = std::make_shared<std::string>(" aaaaaaaaaa" );
4840 a->data .push_back (s);
4941 }
5042
5143 A* a0 = new A (*a.get ());
5244 delete a0;
53-
54- }
5545}
46+ } // namespace test
5647
57- int main (int argc, char **argv){
48+ int main (int argc, char ** argv) {
5849 testing::InitGoogleTest (&argc, argv);
5950 return RUN_ALL_TESTS ();
6051}
0 commit comments