Changes in src/unittests/ObserverTest.cpp [8774c5:7a176b]
- File:
-
- 1 edited
-
src/unittests/ObserverTest.cpp (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/unittests/ObserverTest.cpp
r8774c5 r7a176b 182 182 }; 183 183 184 class Observable Set: public Observable {184 class ObservableCollection : public Observable { 185 185 public: 186 186 typedef std::set<SimpleObservable*> set; … … 188 188 typedef set::const_iterator const_iterator; 189 189 190 Observable Set(int _num) :190 ObservableCollection(int _num) : 191 191 Observable("ObservableCollection"), 192 192 num(_num) … … 199 199 } 200 200 201 ~Observable Set(){201 ~ObservableCollection(){ 202 202 set::iterator iter; 203 203 for(iter=theSet.begin(); iter!=theSet.end(); ++iter ){ 204 204 delete (*iter); 205 }206 }207 208 iterator begin(){209 return iterator(theSet.begin(),this);210 }211 212 iterator end(){213 return iterator(theSet.end(),this);214 }215 216 const int num;217 218 private:219 set theSet;220 };221 222 class ObservableMap : public Observable {223 public:224 typedef std::map<int,SimpleObservable*> set;225 typedef ObservedIterator<set> iterator;226 typedef set::const_iterator const_iterator;227 228 ObservableMap(int _num) :229 Observable("ObservableCollection"),230 num(_num)231 {232 for(int i=0; i<num; ++i){233 SimpleObservable *content = new SimpleObservable();234 content->signOn(this);235 theSet.insert(make_pair(i,content));236 }237 }238 239 ~ObservableMap(){240 set::iterator iter;241 for(iter=theSet.begin(); iter!=theSet.end(); ++iter ){242 delete iter->second;243 205 } 244 206 } … … 269 231 blockObservable = new BlockObservable(); 270 232 notificationObservable = new NotificationObservable(); 271 obsset = new ObservableSet(5); 272 obsmap = new ObservableMap(5); 233 collection = new ObservableCollection(5); 273 234 274 235 observer1 = new UpdateCountObserver(); … … 288 249 delete blockObservable; 289 250 delete notificationObservable; 290 delete obsset; 291 delete obsmap; 251 delete collection; 292 252 293 253 delete observer1; … … 308 268 simpleObservable2->signOn(observer4); 309 269 310 CPPUNIT_ASSERT_EQUAL( 0, observer1->updates );311 CPPUNIT_ASSERT_EQUAL( 0, observer2->updates );312 CPPUNIT_ASSERT_EQUAL( 0, observer3->updates );313 CPPUNIT_ASSERT_EQUAL( 0, observer4->updates );314 315 316 270 simpleObservable1->changeMethod(); 317 271 CPPUNIT_ASSERT_EQUAL( 1, observer1->updates ); … … 338 292 void ObserverTest::doesBlockUpdateTest() { 339 293 callObservable->signOn(observer1); 340 CPPUNIT_ASSERT_EQUAL( 0, observer1->updates );341 294 342 295 callObservable->changeMethod1(); … … 358 311 CPPUNIT_ASSERT_EQUAL( 2, observer1->updates ); 359 312 CPPUNIT_ASSERT_EQUAL( 2, observer2->updates ); 360 }361 362 void ObserverTest::outsideLockTest(){363 callObservable->signOn(observer1);364 CPPUNIT_ASSERT_EQUAL( 0, observer1->updates );365 366 {367 LOCK_OBSERVABLE(*callObservable);368 CPPUNIT_ASSERT_EQUAL( 0, observer1->updates );369 }370 // lock is gone now, observer should have notified371 CPPUNIT_ASSERT_EQUAL( 1, observer1->updates );372 313 } 373 314 … … 400 341 int i = 0; 401 342 // test the general iterator methods 402 for(Observable Set::iterator iter=obsset->begin(); iter!=obsset->end();++iter){403 CPPUNIT_ASSERT(i< obsset->num);343 for(ObservableCollection::iterator iter=collection->begin(); iter!=collection->end();++iter){ 344 CPPUNIT_ASSERT(i< collection->num); 404 345 i++; 405 346 } 406 347 407 348 i=0; 408 for(Observable Set::const_iterator iter=obsset->begin(); iter!=obsset->end();++iter){409 CPPUNIT_ASSERT(i< obsset->num);410 i++; 411 } 412 413 obsset->signOn(observer1);349 for(ObservableCollection::const_iterator iter=collection->begin(); iter!=collection->end();++iter){ 350 CPPUNIT_ASSERT(i<collection->num); 351 i++; 352 } 353 354 collection->signOn(observer1); 414 355 { 415 356 // we construct this out of the loop, so the iterator dies at the end of 416 357 // the scope and not the end of the loop (allows more testing) 417 Observable Set::iterator iter;418 for(iter= obsset->begin(); iter!=obsset->end(); ++iter){358 ObservableCollection::iterator iter; 359 for(iter=collection->begin(); iter!=collection->end(); ++iter){ 419 360 (*iter)->changeMethod(); 420 361 } … … 426 367 427 368 // when using a const_iterator no changes should be propagated 428 for(Observable Set::const_iterator iter = obsset->begin(); iter!=obsset->end();++iter);369 for(ObservableCollection::const_iterator iter = collection->begin(); iter!=collection->end();++iter); 429 370 CPPUNIT_ASSERT_EQUAL( 1, observer1->updates); 430 431 // we need to test the operator-> as well 432 obsmap->signOn(observer2); 433 { 434 // we construct this out of the loop, so the iterator dies at the end of 435 // the scope and not the end of the loop (allows more testing) 436 ObservableMap::iterator iter; 437 for(iter=obsmap->begin(); iter!=obsmap->end(); ++iter){ 438 iter->second->changeMethod(); 439 } 440 // At this point no change should have been propagated 441 CPPUNIT_ASSERT_EQUAL( 0, observer2->updates); 442 } 443 // After the Iterator has died the propagation should take place 444 CPPUNIT_ASSERT_EQUAL( 1, observer2->updates); 445 446 447 obsset->signOff(observer1); 448 obsmap->signOff(observer2); 371 collection->signOff(observer1); 449 372 } 450 373
Note:
See TracChangeset
for help on using the changeset viewer.
