From kde-core-devel Tue Oct 23 09:25:48 2012 From: David Faure Date: Tue, 23 Oct 2012 09:25:48 +0000 To: kde-core-devel Subject: Re: Comparing KFileItems Message-Id: <90076269.437UOuaikW () asterix ! site> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=135098429114114 On Monday 22 October 2012 20:10:23 Frank Reininghaus wrote: > KFileItem.diff > diff --git a/kio/kio/kfileitem.cpp b/kio/kio/kfileitem.cpp > index 482c4b6..ad62246 100644 > --- a/kio/kio/kfileitem.cpp > +++ b/kio/kio/kfileitem.cpp > @@ -1307,13 +1307,12 @@ bool KFileItem::cmp( const KFileItem & item ) const > > bool KFileItem::operator==(const KFileItem& other) const > { > - // is this enough? > - return d == other.d; > + return d == other.d || d->m_url == other.d->m_url; > } Yes. > bool KFileItem::operator!=(const KFileItem& other) const > { > - return d != other.d; > + return d != other.d && d->m_url != other.d->m_url; > } Or return !operator==(other), inline, for easier maintainance. > #ifndef KDE_NO_DEPRECATED > diff --git a/kio/tests/kfileitemtest.cpp b/kio/tests/kfileitemtest.cpp > index fa88af7..1ac5d98 100644 > --- a/kio/tests/kfileitemtest.cpp > +++ b/kio/tests/kfileitemtest.cpp > @@ -108,11 +108,12 @@ void KFileItemTest::testDetach() > fileItem2.mark(); > QVERIFY(fileItem2.isMarked()); > QVERIFY(!fileItem.isMarked()); > - QVERIFY(fileItem != fileItem2); > + QVERIFY(fileItem == fileItem2); The point of that test was to ensure that detaching did happen. Maybe add "friend class KFileItemTest;" and compare the value of the d pointers? In addition to QVERIFY(fileItem == fileItem2), of course. > fileItem = fileItem2; > QVERIFY(fileItem2.isMarked()); > QVERIFY(fileItem == fileItem2); > + QVERIFY(!(fileItem != fileItem2)); > } > > void KFileItemTest::testBasic() > @@ -246,7 +247,8 @@ void KFileItemTest::testCmp() > > KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, > KUrl(file.fileName()), true /*on demand*/); KFileItem > fileItem2(KFileItem::Unknown, KFileItem::Unknown, KUrl(file.fileName()), > false); - QVERIFY(fileItem != fileItem2); // created independently so > not 'equal' + QVERIFY(fileItem == fileItem2); // created independently, > but still 'equal' + QVERIFY(!(fileItem != fileItem2)); > QVERIFY(fileItem.cmp(fileItem2)); Thank you kmail for messing up the lines in the reply... The change looks good though. Could you add a bit of docu while at it, about the difference between == and cmp as discussed here? Thanks. -- David Faure, faure@kde.org, http://www.davidfaure.fr Working on KDE, in particular KDE Frameworks 5