Main MRPT website > C++ reference for MRPT 1.9.9
poly_ptr_unittest.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
11 #include <mrpt/core/common.h> // TODO
12 #include <mrpt/poses/CPose2D.h>
13 #include <gtest/gtest.h>
14 
15 using namespace mrpt;
16 using namespace std;
17 
18 TEST(copy_ptr, SimpleOps)
19 {
21  EXPECT_FALSE(ptr1);
22 
23  ptr1.reset(new int());
24  EXPECT_TRUE(ptr1);
25 
26  *ptr1 = 123;
27  EXPECT_TRUE(*ptr1 == 123);
28 
29  {
31  EXPECT_TRUE(*ptr1 == *ptr2);
32 
33  (*ptr2)++;
34  EXPECT_FALSE(*ptr1 == *ptr2);
35  }
36  {
38  ptr2 = ptr1;
39  EXPECT_TRUE(*ptr1 == *ptr2);
40 
41  (*ptr2)++;
42  EXPECT_FALSE(*ptr1 == *ptr2);
43  }
44 }
45 
46 TEST(copy_ptr, StlContainer)
47 {
49 
50  str2d_ptr ptr;
51  EXPECT_FALSE(ptr);
52 
53  std::vector<str2d_ptr> v;
54  for (int i = 0; i < 10; i++)
55  {
56  v.push_back(str2d_ptr(new str2d_ptr::value_type));
57  v[i]->first = "xxx";
58  v[i]->second = i;
59  }
60 
61  str2d_ptr v3 = v[3];
62  EXPECT_TRUE(v3->second == 3);
63  v3->second++;
64 
65  EXPECT_TRUE(v3->second == 4);
66  EXPECT_TRUE(v[3]->second == 3);
67 }
68 
69 TEST(poly_ptr, SimpleOps)
70 {
72  EXPECT_FALSE(ptr1);
73 
74  ptr1.reset(new mrpt::poses::CPose2D());
75  EXPECT_TRUE(ptr1);
76 
77  ptr1->x(123.0);
78  EXPECT_NEAR(ptr1->x(), 123.0, 1e-9);
79 
80  {
82  EXPECT_TRUE(*ptr1 == *ptr2);
83 
84  ptr2->x_incr(1.0);
85  EXPECT_FALSE(*ptr1 == *ptr2);
86  }
87  {
89  ptr2 = ptr1;
90  EXPECT_TRUE(*ptr1 == *ptr2);
91 
92  ptr2->x_incr(1.0);
93  EXPECT_FALSE(*ptr1 == *ptr2);
94  }
95 }
96 
97 TEST(poly_ptr, StlContainer)
98 {
100 
101  str2d_ptr ptr;
102  EXPECT_FALSE(ptr);
103 
104  std::vector<str2d_ptr> v;
105  for (int i = 0; i < 10; i++)
106  {
107  v.push_back(str2d_ptr(new str2d_ptr::value_type));
108  v[i]->x(i);
109  }
110 
111  str2d_ptr v3 = v[3];
112  EXPECT_NEAR(v3->x(), 3.0, 1e-9);
113  v3->x_incr(1.0);
114 
115  EXPECT_NEAR(v3->x(), 4.0, 1e-9);
116  EXPECT_NEAR(v[3]->x(), 3.0, 1e-9);
117 }
mrpt::containers::poly_ptr
internal::generic_copier_ptr< T, internal::CopyCloner< T > > poly_ptr
Smart pointer for polymorphic classes with a clone() method.
Definition: deepcopy_ptr.h:157
mrpt::poses::CPoseOrPoint::x_incr
void x_incr(const double v)
Definition: CPoseOrPoint.h:167
deepcopy_ptr.h
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
CPose2D.h
v
const GLdouble * v
Definition: glext.h:3678
mrpt::containers::internal::generic_copier_ptr
Definition: deepcopy_ptr.h:47
mrpt::poses::CPose2D
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
Definition: CPose2D.h:40
mrpt::poses::CPoseOrPoint::x
double x() const
Common members of all points & poses classes.
Definition: CPoseOrPoint.h:140
mrpt::containers::copy_ptr
internal::generic_copier_ptr< T, internal::CopyStatic< T > > copy_ptr
Smart pointer for non-polymorphic classes.
Definition: deepcopy_ptr.h:165
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:4109
common.h
mrpt::containers::internal::generic_copier_ptr::reset
void reset(T *ptr=nullptr)
Definition: deepcopy_ptr.h:138
TEST
TEST(copy_ptr, SimpleOps)
Definition: poly_ptr_unittest.cpp:18
x
GLenum GLint x
Definition: glext.h:3538



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST