mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 19:05:31 +08:00
Fixed buggy implementation of CPhysicalQuantity::lessThan.
This bug could cause a variant containing a list containing a null PQ to compare equal to a variant containing a list containing a non-null PQ.
This commit is contained in:
@@ -222,7 +222,10 @@ namespace BlackMisc
|
|||||||
bool CPhysicalQuantity<MU, PQ>::lessThan(const CPhysicalQuantity<MU, PQ> &other) const
|
bool CPhysicalQuantity<MU, PQ>::lessThan(const CPhysicalQuantity<MU, PQ> &other) const
|
||||||
{
|
{
|
||||||
if (*this == other) return false;
|
if (*this == other) return false;
|
||||||
if (this->isNull() || other.isNull()) return false;
|
|
||||||
|
if (isNull() < other.isNull()) { return true; }
|
||||||
|
if (isNull() > other.isNull()) { return false; }
|
||||||
|
if (isNull() && other.isNull()) { return false; }
|
||||||
|
|
||||||
return (m_value < other.value(m_unit));
|
return (m_value < other.value(m_unit));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,14 @@ namespace BlackMiscTest
|
|||||||
|
|
||||||
CFrequencyUnit fu1 = CFrequencyUnit::Hz();
|
CFrequencyUnit fu1 = CFrequencyUnit::Hz();
|
||||||
QVERIFY2(fu1 != du1, "Hz must not be meter");
|
QVERIFY2(fu1 != du1, "Hz must not be meter");
|
||||||
|
|
||||||
|
// null comparisons
|
||||||
|
const CLength null(CLength::null());
|
||||||
|
const CLength nonNull(1, CLengthUnit::m());
|
||||||
|
QVERIFY2(null == CLength::null(), "null is equal to null");
|
||||||
|
QVERIFY2(!(null < CLength::null()), "null is equivalent to null");
|
||||||
|
QVERIFY2(null != nonNull, "null is not equal to non-null");
|
||||||
|
QVERIFY2((null < nonNull) != (null > nonNull), "null is ordered wrt non-null");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTestPhysicalQuantities::lengthBasics()
|
void CTestPhysicalQuantities::lengthBasics()
|
||||||
|
|||||||
@@ -85,9 +85,8 @@ namespace BlackMiscTest
|
|||||||
CLength l4(-1, CLengthUnit::m());
|
CLength l4(-1, CLengthUnit::m());
|
||||||
QVERIFY2(l1 != l3, "Null length and non-null length should not be equal");
|
QVERIFY2(l1 != l3, "Null length and non-null length should not be equal");
|
||||||
QVERIFY2(l1 != l4, "Null length and non-null length should not be equal");
|
QVERIFY2(l1 != l4, "Null length and non-null length should not be equal");
|
||||||
QVERIFY2(!(l1 < l4), "Null length and non-null length should not be comparable");
|
QVERIFY2((l1 < l4) != (l1 > l4), "Null length and non-null length should be comparable");
|
||||||
QVERIFY2(!(l1 > l4), "Null length and non-null length should not be comparable");
|
QVERIFY2(compare(l1, l4) != 0, "Null length and non-null length should be sortable");
|
||||||
QVERIFY2(compare(l1, l4) < 0, "Null length and non-null length should be sortable");
|
|
||||||
|
|
||||||
CVariant station1qv = CVariant::fromValue(station1);
|
CVariant station1qv = CVariant::fromValue(station1);
|
||||||
QVERIFY2(station1 == station1, "Station should be equal");
|
QVERIFY2(station1 == station1, "Station should be equal");
|
||||||
|
|||||||
Reference in New Issue
Block a user