From 1b4353849291f60e26a4bf6973b1730e3d42e53b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 22 Aug 2014 17:49:45 +0200 Subject: [PATCH] refs #314, samples for Variant tests, fixed some minor things in other samples --- samples/blackmisc/main.cpp | 3 ++ samples/blackmisc/samplesjson.cpp | 3 +- samples/blackmisc/samplesmetadata.cpp | 6 +++ samples/blackmisc/samplesvariant.cpp | 62 +++++++++++++++++++++++++++ samples/blackmisc/samplesvariant.h | 27 ++++++++++++ 5 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 samples/blackmisc/samplesvariant.cpp create mode 100644 samples/blackmisc/samplesvariant.h diff --git a/samples/blackmisc/main.cpp b/samples/blackmisc/main.cpp index 3fd56729f..ab995acf5 100644 --- a/samples/blackmisc/main.cpp +++ b/samples/blackmisc/main.cpp @@ -12,6 +12,7 @@ #include "samplesmetadata.h" #include "samplescontainer.h" #include "samplesjson.h" +#include "samplesvariant.h" #include "blackmisc/blackmiscfreefunctions.h" #include "blackmisc/pqallquantities.h" @@ -28,9 +29,11 @@ int main(int argc, char *argv[]) Q_UNUSED(argv); BlackMisc::initResources(); + BlackMisc::registerMetadata(); CSamplesJson::samples(); CSamplesChangeObject::samples(); CSamplesContainer::samples(); CSamplesMetadata::samples(); + CSamplesVariant::samples(); return 0; } diff --git a/samples/blackmisc/samplesjson.cpp b/samples/blackmisc/samplesjson.cpp index 72cb015d2..880878913 100644 --- a/samples/blackmisc/samplesjson.cpp +++ b/samples/blackmisc/samplesjson.cpp @@ -85,7 +85,8 @@ namespace BlackMiscTest stations.fromJson(json); qDebug() << stations; - qDebug() << "-----------------------------------------------"; + cin.readLine(); + qDebug() << "------- Enter ---------------------------------"; return 0; } diff --git a/samples/blackmisc/samplesmetadata.cpp b/samples/blackmisc/samplesmetadata.cpp index e0dc14140..15254a268 100644 --- a/samples/blackmisc/samplesmetadata.cpp +++ b/samples/blackmisc/samplesmetadata.cpp @@ -26,8 +26,14 @@ namespace BlackMiscTest */ int CSamplesMetadata::samples() { + QTextStream cin(stdin); + BlackMisc::registerMetadata(); BlackMisc::displayAllUserMetatypesTypes(); + + cin.readLine(); + qDebug() << "------- Enter --------"; + return 0; } diff --git a/samples/blackmisc/samplesvariant.cpp b/samples/blackmisc/samplesvariant.cpp new file mode 100644 index 000000000..072a3bee0 --- /dev/null +++ b/samples/blackmisc/samplesvariant.cpp @@ -0,0 +1,62 @@ +/* Copyright (C) 2013 + * swift Project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "samplesvariant.h" +#include "blackmisc/pqallquantities.h" +#include "blackmisc/avallclasses.h" +#include "blackmisc/blackmiscfreefunctions.h" +#include +#include + +using namespace BlackMisc::PhysicalQuantities; +using namespace BlackMisc::Aviation; + +namespace BlackMiscTest +{ + + int CSamplesVariant::samples() + { + BlackMisc::registerMetadata(); + + CAngle a1(30.0, CAngleUnit::deg()); + QVariant qva = a1.toQVariant(); + qDebug() << a1 << qva.userType(); + + CHeading h1(45, CHeading::True, CAngleUnit::deg()); + CHeading h2(60, CHeading::True, CAngleUnit::deg()); + + QVariant qvh = h1.toQVariant(); + qDebug() << h1 << qvh.userType(); + + CAngle *ap_heading = &h1; // angle actually heading + CAngle *ap_angle = &a1; // angle really heading + qDebug() << (*ap_heading) << ap_heading->toQVariant().userType(); + qDebug() << (*ap_angle) << ap_angle->toQVariant().userType(); + + // This works, because ap is actually heading + ap_heading->fromQVariant(h2.toQVariant()); + qDebug() << (*ap_heading) << ap_heading->toQVariant().userType(); + + // This works, angle from variant angle + ap_angle->fromQVariant(a1.toQVariant()); + qDebug() << (*ap_angle) << ap_angle->toQVariant().userType(); + + // This gives me an unwanted(!) assert, canConvert is not smart enough to detect upcasting + // because CValueObjects are not QObjects + ap_angle->fromQVariant(h2.toQVariant()); + qDebug() << (*ap_angle) << ap_angle->toQVariant().userType(); + + // This gives me the intended assert, because I assign angle to heading + ap_heading->fromQVariant(a1.toQVariant()); + qDebug() << (*ap_heading) << ap_heading->toQVariant().userType(); + + return 0; + } + +} // namespace diff --git a/samples/blackmisc/samplesvariant.h b/samples/blackmisc/samplesvariant.h new file mode 100644 index 000000000..ae04f3624 --- /dev/null +++ b/samples/blackmisc/samplesvariant.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2013 + * swift Project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of Swift Project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISCTEST_SAMPLESVARIANT_H +#define BLACKMISCTEST_SAMPLESVARIANT_H + +namespace BlackMiscTest +{ + + //! Samples for metadata + class CSamplesVariant + { + public: + //! Run the samples + static int samples(); + }; +} // namespace + +#endif