[fwbuilder-commits] r606 - in branches/v4_0/src/fwbuilder: . unit_tests/FWObjectTest
Brought to you by:
mikehorn
From: <a2...@in...> - 2010-05-23 22:50:28
|
Author: a2k Date: 2010-05-23 15:50:18 -0700 (Sun, 23 May 2010) New Revision: 606 Modified: branches/v4_0/src/fwbuilder/FWObject.cpp branches/v4_0/src/fwbuilder/unit_tests/FWObjectTest/FWObjectTest.cpp Log: Fixed #1459 ?\226?\128?\147 now using set::find to check if element was matched previously. empty key is now not equal to absent key. Modified: branches/v4_0/src/fwbuilder/FWObject.cpp =================================================================== --- branches/v4_0/src/fwbuilder/FWObject.cpp 2010-05-22 18:28:35 UTC (rev 605) +++ branches/v4_0/src/fwbuilder/FWObject.cpp 2010-05-23 22:50:18 UTC (rev 606) @@ -333,21 +333,13 @@ if (getTypeName() != obj->getTypeName() || name != obj->name || comment != obj->comment || ro != obj->ro) return false; - int mySize = 0; - int otherSize = 0; - for (map<string,string>::const_iterator i=data.begin(); i!=data.end(); i++) - if ((*i).second.length() != 0) - mySize ++; - for (map<string,string>::const_iterator i=obj->data.begin(); i!=obj->data.end(); i++) - if ((*i).second.length() != 0) - otherSize ++; - if (mySize != otherSize) return false; + if (data.size() != obj->data.size()) + return false; for(map<string, string>::const_iterator i=data.begin(); i!=data.end(); ++i) { const string &name = (*i).first; const string &value = (*i).second; - if (value.length() == 0) continue; // 10/21/2008 --vk map<string,string>::const_iterator j=obj->data.find(name); if (j==obj->data.end()) return false; @@ -363,26 +355,22 @@ FWObject::const_iterator i1=begin(); for ( ; i1!=end(); ++i1) { - bool found=false; + bool found_equal_child_object=false; FWObject::const_iterator j1=obj->begin(); for ( ; j1!=obj->end(); ++j1) { if ((*i1)->cmp(*j1, recursive)) { - int oldsize = matched.size(); - matched.insert(*j1); - if (matched.size() == oldsize) + if (matched.find(*j1) == matched.end()) { - continue; - } - else - { - found = true; + matched.insert(*j1); + found_equal_child_object = true; break; } + // else object matches some other object } } - if (!found) return false; + if (!found_equal_child_object) return false; } } return true; Modified: branches/v4_0/src/fwbuilder/unit_tests/FWObjectTest/FWObjectTest.cpp =================================================================== --- branches/v4_0/src/fwbuilder/unit_tests/FWObjectTest/FWObjectTest.cpp 2010-05-22 18:28:35 UTC (rev 605) +++ branches/v4_0/src/fwbuilder/unit_tests/FWObjectTest/FWObjectTest.cpp 2010-05-23 22:50:18 UTC (rev 606) @@ -51,7 +51,7 @@ obj2->duplicate(obj1); obj1->setStr("key", "value1"); CPPUNIT_ASSERT(obj1->cmp(obj2) == false); - obj1->setStr("key", ""); + obj1->remStr("key"); CPPUNIT_ASSERT(obj2->cmp(obj1) == true); FWObject *ch1 = db.create(Interface::TYPENAME); |