25 #ifndef WPROPERTIES_TEST_H
26 #define WPROPERTIES_TEST_H
30 #include <cxxtest/TestSuite.h>
32 #include "../WProperties.h"
33 #include "../exceptions/WPropertyNotUnique.h"
34 #include "../exceptions/WPropertyUnknown.h"
35 #include "../exceptions/WPropertyNameMalformed.h"
75 boost::shared_ptr< WProperties > p;
76 TS_ASSERT_THROWS_NOTHING( p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) ) );
79 TS_ASSERT( p->getName() ==
"hey" );
80 TS_ASSERT( p->getDescription() ==
"you" );
81 TS_ASSERT( p->getType() == PV_GROUP );
83 TS_ASSERT_THROWS_NOTHING( p.reset() );
93 boost::shared_ptr< WProperties > p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
96 boost::shared_ptr< WPropertyBase > p1 = p->addProperty(
"1",
"test1",
true );
97 boost::shared_ptr< WPropertyBase > p2 = p->addProperty(
"2",
"test2", 1 );
98 boost::shared_ptr< WPropertyBase > p3 = p->addProperty(
"3",
"test3", 1.0 );
105 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 3 );
108 TS_ASSERT( p1->getType() == PV_BOOL );
109 TS_ASSERT( p2->getType() == PV_INT );
110 TS_ASSERT( p3->getType() == PV_DOUBLE );
123 boost::shared_ptr< WProperties > p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
126 boost::shared_ptr< WPropertyBase > p1 = p->addProperty(
"1",
"test1",
true );
127 boost::shared_ptr< WPropertyBase > p2 = p->addProperty(
"2",
"test2", 1 );
128 boost::shared_ptr< WPropertyBase > p3 = p->addProperty(
"3",
"test3", 1.0 );
131 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 3 );
134 TS_ASSERT_THROWS_NOTHING( p->clear() );
135 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 0 );
138 TS_ASSERT_THROWS_NOTHING( p->clear() );
148 boost::shared_ptr< WProperties > p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
151 boost::shared_ptr< WPropertyBase > p1 = p->addProperty(
"1",
"test1",
true );
152 boost::shared_ptr< WPropertyBase > p2 = p->addProperty(
"2",
"test2", 1 );
153 boost::shared_ptr< WPropertyBase > p3 = p->addProperty(
"3",
"test3", 1.0 );
156 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 3 );
159 TS_ASSERT_THROWS_NOTHING( p->removeProperty( p2 ) );
160 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 2 );
163 TS_ASSERT_THROWS_NOTHING( p->removeProperty( p2 ) );
164 TS_ASSERT( p->m_properties.getReadTicket()->get().size() == 2 );
175 boost::shared_ptr< WProperties > p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
178 boost::shared_ptr< WPropertyBase > p1 = p->addProperty(
"1",
"test1",
true );
179 boost::shared_ptr< WPropertyBase > p2 = p->addProperty(
"2",
"test2", 1 );
180 boost::shared_ptr< WPropertyBase > p3 = p->addProperty(
"3",
"test3", 1.0 );
186 TS_ASSERT( p->existsProperty(
"1" ) );
187 TS_ASSERT( !p->existsProperty(
"shouldNotBeInTheList" ) );
193 boost::shared_ptr< WPropertyBase > someProp;
194 TS_ASSERT_THROWS_NOTHING( someProp = p->findProperty(
"1" ) );
196 TS_ASSERT( someProp );
199 TS_ASSERT_THROWS_NOTHING( someProp = p->findProperty(
"shouldNotBeInTheList" ) );
201 TS_ASSERT( !someProp );
209 TS_ASSERT_THROWS_NOTHING( someProp = p->getProperty(
"1" ) );
210 TS_ASSERT( someProp );
213 TS_ASSERT_THROWS( someProp = p->getProperty(
"shouldNotBeInTheList" ),
WPropertyUnknown );
221 boost::shared_ptr< WProperties > p = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
222 boost::shared_ptr< WProperties > psub = p->addPropertyGroup(
"heySub",
"you" );
225 boost::shared_ptr< WPropertyBase > p1 = p->addProperty(
"1",
"test1",
true );
226 boost::shared_ptr< WPropertyBase > p2 = p->addProperty(
"2",
"test2", 1 );
227 boost::shared_ptr< WPropertyBase > p3 = psub->addProperty(
"3",
"test3", 1.0 );
228 boost::shared_ptr< WPropertyBase > p4 = psub->addProperty(
"4",
"test4", std::string(
"hello" ) );
237 TS_ASSERT( !p->existsProperty(
"3" ) );
238 TS_ASSERT( !p->existsProperty(
"4" ) );
239 TS_ASSERT( psub->existsProperty(
"3" ) );
240 TS_ASSERT( psub->existsProperty(
"4" ) );
241 TS_ASSERT( !psub->existsProperty(
"1" ) );
242 TS_ASSERT( !psub->existsProperty(
"2" ) );
245 TS_ASSERT( p->existsProperty(
"heySub/3" ) );
246 TS_ASSERT( !p->existsProperty(
"heySub/1" ) );
252 TS_ASSERT( p3 == p->findProperty(
"heySub/3" ) );
253 TS_ASSERT( p4 == p->findProperty(
"heySub/4" ) );
256 TS_ASSERT( boost::shared_ptr< WPropertyBase >() == p->findProperty(
"heySub/1" ) );
261 TS_ASSERT_THROWS_NOTHING( p->getProperty(
"heySub/3" ) );
262 TS_ASSERT_THROWS_NOTHING( p->getProperty(
"heySub/4" ) );
276 boost::shared_ptr< WProperties > orig = boost::shared_ptr< WProperties >(
new WProperties(
"hey",
"you" ) );
277 boost::shared_ptr< WProperties > clone = orig->clone()->toPropGroup();
280 TS_ASSERT( clone.get() );
281 TS_ASSERT( orig != clone );
287 TS_ASSERT( orig->getUpdateCondition() != clone->getUpdateCondition() );
290 clone->addProperty(
"1",
"test1", 1.0 );
291 TS_ASSERT( clone->m_properties.getReadTicket()->get().size() == 1 );
292 TS_ASSERT( orig->m_properties.getReadTicket()->get().size() == 0 );
302 clone->addProperty(
"2",
"test2",
false );
305 TS_ASSERT( m_testTemporary1 ==
false );
309 m_testTemporary1 =
false;
311 orig->addProperty(
"1",
"test1",
false );
314 TS_ASSERT( m_testTemporary1 ==
true );
320 boost::shared_ptr< WProperties > cloneClone = clone->clone()->toPropGroup();
323 TS_ASSERT( clone->m_properties.getReadTicket()->get().size() == 2 );
324 TS_ASSERT( cloneClone->m_properties.getReadTicket()->get().size() == 2 );
332 boost::shared_ptr< WPropertyBase > p = cloneClone->findProperty( ( *iter )->getName() );
334 TS_ASSERT( p != ( *iter ) );
339 #endif // WPROPERTIES_TEST_H