mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-08-08 10:45:36 +08:00
Issue #15 CVariant can convert between CVariantList and our other container classes
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
* \ingroup testblackmisc
|
||||
*/
|
||||
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
#include "blackmisc/aviation/atcstation.h"
|
||||
#include "blackmisc/aviation/callsign.h"
|
||||
#include "blackmisc/compare.h"
|
||||
@@ -24,6 +25,7 @@
|
||||
#include "blackmisc/pq/units.h"
|
||||
#include "blackmisc/propertyindexvariantmap.h"
|
||||
#include "blackmisc/registermetadata.h"
|
||||
#include "blackmisc/variantlist.h"
|
||||
#include "blackmisc/variant.h"
|
||||
#include "test.h"
|
||||
|
||||
@@ -50,6 +52,9 @@ namespace BlackMiscTest
|
||||
//! Basic unit tests for value objects and variants
|
||||
void variant();
|
||||
|
||||
//! Unit tests for variant lists
|
||||
void variantList();
|
||||
|
||||
//! Unit tests for value maps and value objects
|
||||
void valueMap();
|
||||
};
|
||||
@@ -106,6 +111,29 @@ namespace BlackMiscTest
|
||||
QVERIFY2(compare(station1, station3) != 0, "Station should not be equal");
|
||||
}
|
||||
|
||||
void CTestVariantAndMap::variantList()
|
||||
{
|
||||
const CSequence<int> ints { 1, 2, 3 };
|
||||
CVariant variant = CVariant::from(ints);
|
||||
QVERIFY2(variant.canConvert<CVariantList>(), "Variant containing list can convert to CVariantList");
|
||||
QVERIFY2(variant.convert(qMetaTypeId<CVariantList>()), "Variant containing list can convert to CVariantList");
|
||||
const CVariantList variantInts = variant.to<CVariantList>();
|
||||
QVERIFY2(ints.size() == variantInts.size(), "Variant list has same size as original list");
|
||||
QVERIFY2(ints[0] == variantInts[0].to<int>(), "Variant list has same element");
|
||||
QVERIFY2(variant.canConvert<CSequence<int>>(), "Variant containing can convert back");
|
||||
QVERIFY2(ints == variant.to<CSequence<int>>(), "Variant list converted back compares equal");
|
||||
|
||||
const CAirlineIcaoCodeList list { CAirlineIcaoCode("BAW"), CAirlineIcaoCode("DLH"), CAirlineIcaoCode("AAL") };
|
||||
variant = CVariant::from(list);
|
||||
QVERIFY2(variant.canConvert<CVariantList>(), "Variant containing list can convert to CVariantList");
|
||||
QVERIFY2(variant.convert(qMetaTypeId<CVariantList>()), "Variant containing list can convert to CVariantList");
|
||||
CVariantList variantList = variant.to<CVariantList>();
|
||||
QVERIFY2(list.size() == variantList.size(), "Variant list has same size as original list");
|
||||
QVERIFY2(list[0] == variantList[0].to<CAirlineIcaoCode>(), "Variant list has same element");
|
||||
QVERIFY2(variant.canConvert<CAirlineIcaoCodeList>(), "Variant containing can convert back");
|
||||
QVERIFY2(list == variant.to<CAirlineIcaoCodeList>(), "Variant list converted back compares equal");
|
||||
}
|
||||
|
||||
void CTestVariantAndMap::valueMap()
|
||||
{
|
||||
// ATC station
|
||||
|
||||
Reference in New Issue
Block a user