nail down all the MObjectRef equality comparison cases

This commit is contained in:
Fischlurch 2010-01-13 03:29:57 +01:00
parent e04672936a
commit e9d641babd
2 changed files with 110 additions and 11 deletions

View file

@ -142,30 +142,56 @@ namespace mobject {
template<class MOX>
bool
operator== (MORef<MOX> const& oRef)
operator== (MORef<MOX> const& oRef) const
{
return pRef_ == oRef.pRef_;
return oRef == this->pRef_;
}
template<class MOX>
bool
operator== (PlacementRef<MOX> const& pRef)
operator!= (MORef<MOX> const& oRef) const
{
return pRef_ == pRef;
return oRef != this->pRef_;
}
template<class MOX>
bool
operator== (typename Placement<MOX>::ID const& pID)
friend bool
operator== (MORef const& oRef, PlacementRef<MOX> const& pRef)
{
return pRef_ == pID;
return oRef.pRef_ == pRef;
}
template<class XX>
bool
operator!= (XX const& xx)
template<class MOX>
friend bool
operator!= (MORef const& oRef, PlacementRef<MOX> const& pRef)
{
return !((*this) == xx);
return oRef.pRef_ != pRef;
}
template<class MOX>
friend bool
operator== (PlacementRef<MOX> const& pRef, MORef const& oRef)
{
return pRef == oRef.pRef_;
}
template<class MOX>
friend bool
operator!= (PlacementRef<MOX> const& pRef, MORef const& oRef)
{
return pRef != oRef.pRef_;
}
bool
operator== (PlacementMO::ID const& pID) const
{
return PlacementMO::ID (pRef_) == pID;
}
bool
operator!= (PlacementMO::ID const& pID) const
{
return PlacementMO::ID (pRef_) != pID;
}
};

View file

@ -127,6 +127,7 @@ namespace test {
checkBuildMObjectRef (ref1, &pClip1);
checkBuildMObjectRef (ref2, &pClip2);
checkComparison(rP1,rP2);
checkLifecycle (rP1,rP2);
checkTypeHandling (luid);
// -----Tests------------------
@ -188,6 +189,78 @@ namespace test {
ASSERT (4 == rMO.use_count());
}
void
checkComparison (PMO& p1, PMO& p2)
{
PlacementRef<Clip> pRef1 (p1);
PlacementRef<MObject> pRef2 (p2);
MORef<MObject> rM;
MORef<Clip> rC;
#if false //////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET 384 !!!!!!!!!
rM.activate (p1);
rC.activate (p2);
#endif ////////////////////////////////////////////////////////////////////////////////////////TODO lots of things unimplemented.....!!!!!
ASSERT (rM && rC);
ASSERT (!(rM == rC) && !(rC == rM));
ASSERT ( (rM != rC) && (rC != rM));
// mixed comparisons
ASSERT ( (rM == pRef1) && (pRef1 == rM));
ASSERT ( (rC == pRef2) && (pRef2 == rC));
ASSERT (!(rM != pRef1) && !(pRef1 != rM));
ASSERT (!(rC != pRef2) && !(pRef2 != rC));
ASSERT ( (rM != pRef2) && (pRef2 != rM));
ASSERT ( (rC != pRef1) && (pRef1 != rC));
ASSERT (!(rM == pRef2) && !(pRef2 == rM));
ASSERT (!(rC == pRef1) && !(pRef1 == rC));
ASSERT ( (rM == p1.getID()) );
ASSERT ( (rC == p2.getID()) );
ASSERT (!(rM != p1.getID()) );
ASSERT (!(rC != p2.getID()) );
ASSERT ( (rM != p2.getID()) );
ASSERT ( (rC != p1.getID()) );
ASSERT (!(rM == p2.getID()) );
ASSERT (!(rC == p1.getID()) );
#if false //////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET 384 !!!!!!!!!
rC.activate (p1);
#endif ////////////////////////////////////////////////////////////////////////////////////////TODO lots of things unimplemented.....!!!!!
ASSERT ( (rM == rC) && (rC == rM));
ASSERT (!(rM != rC) && !(rC != rM));
ASSERT ( (rC == pRef1) && (pRef1 == rC));
ASSERT (!(rC != pRef1) && !(pRef1 != rC));
ASSERT ( (rC != pRef2) && (pRef2 != rC));
ASSERT (!(rC == pRef2) && !(pRef2 == rC));
ASSERT ( (rC == p1.getID()) );
ASSERT (!(rC != p1.getID()) );
ASSERT ( (rC != p2.getID()) );
ASSERT (!(rC == p2.getID()) );
rM.close();
ASSERT (!rM);
ASSERT (!(rM == rC) && !(rC == rM));
ASSERT ( (rM != rC) && (rC != rM));
ASSERT (!(rM == pRef1) && !(pRef1 == rM));
ASSERT ( (rM != pRef1) && (pRef1 != rM));
ASSERT (!(rM != pRef2) && !(pRef2 != rM));
ASSERT ( (rM == pRef2) && (pRef2 == rM));
ASSERT (!(rM == p1.getID()) );
ASSERT ( (rM != p1.getID()) );
ASSERT (!(rM != p2.getID()) );
ASSERT ( (rM == p2.getID()) );
}
void
checkLifecylce (PMObj const& p1, PMObj const& p2)
{