diff options
| author | Andre Heinecke <[email protected]> | 2016-08-12 14:55:51 +0000 | 
|---|---|---|
| committer | Andre Heinecke <[email protected]> | 2016-08-12 14:55:51 +0000 | 
| commit | 391e55411cda11446ca9de4dd0dc2b54d3e6fff5 (patch) | |
| tree | 729da9d7b434a76e377fa1c25736758fcc30f08e /lang/qt | |
| parent | Cpp: Provide size-hint for seekable and mem data (diff) | |
| download | gpgme-391e55411cda11446ca9de4dd0dc2b54d3e6fff5.tar.gz gpgme-391e55411cda11446ca9de4dd0dc2b54d3e6fff5.zip | |
Qt: Add test for progress signal of encryptjob
* lang/qt/tests/t-encrypt.cpp (testProgress): New.
--
This tests that a ByteArray IODevice now gives proper progress
signals.
Diffstat (limited to 'lang/qt')
| -rw-r--r-- | lang/qt/tests/t-encrypt.cpp | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/lang/qt/tests/t-encrypt.cpp b/lang/qt/tests/t-encrypt.cpp index c6fcaa21..708c2050 100644 --- a/lang/qt/tests/t-encrypt.cpp +++ b/lang/qt/tests/t-encrypt.cpp @@ -31,6 +31,8 @@  #include <QDebug>  #include <QTest>  #include <QTemporaryDir> +#include <QSignalSpy> +#include <QBuffer>  #include "keylistjob.h"  #include "encryptjob.h"  #include "qgpgmeencryptjob.h" @@ -39,8 +41,11 @@  #include "qgpgmedecryptjob.h"  #include "qgpgmebackend.h"  #include "keylistresult.h" +#include "engineinfo.h"  #include "t-support.h" +#define PROGRESS_TEST_SIZE 1 * 1024 * 1024 +  using namespace QGpgME;  using namespace GpgME; @@ -48,6 +53,9 @@ class EncryptionTest : public QGpgMETest  {      Q_OBJECT +Q_SIGNALS: +    void asyncDone(); +  private Q_SLOTS:      void testSimpleEncryptDecrypt() @@ -82,6 +90,60 @@ private Q_SLOTS:          delete decJob;      } +    void testProgress() +    { +        if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.15") { +            // We can only test the progress with 2.1.15 as this started to +            // have total progress for memory callbacks +            return; +        } +        auto listjob = openpgp()->keyListJob(false, false, false); +        std::vector<Key> keys; +        auto keylistresult = listjob->exec(QStringList() << QStringLiteral("[email protected]"), +                                          false, keys); +        Q_ASSERT(!keylistresult.error()); +        Q_ASSERT(keys.size() == 1); +        delete listjob; + +        auto job = openpgp()->encryptJob(/*ASCII Armor */false, /* Textmode */ false); +        Q_ASSERT(job); +        QByteArray plainBa; +        plainBa.fill('X', PROGRESS_TEST_SIZE); +        QByteArray cipherText; + +        bool initSeen = false; +        bool finishSeen = false; +        connect(job, &Job::progress, this, [this, &initSeen, &finishSeen] (const QString& what, int current, int total) { +                // We only check for progress 0 and max progress as the other progress +                // lines depend on the system speed and are as such unreliable to test. +                Q_ASSERT(total == PROGRESS_TEST_SIZE); +                if (current == 0) { +                    initSeen = true; +                } +                if (current == total) { +                    finishSeen = true; +                } +                Q_ASSERT(current >= 0 && current <= total); +            }); +        connect(job, &EncryptJob::result, this, [this, &initSeen, &finishSeen] (const GpgME::EncryptionResult &result, +                                                                                const QByteArray &cipherText, +                                                                                const QString, +                                                                                const GpgME::Error) { +                Q_ASSERT(initSeen); +                Q_ASSERT(finishSeen); +                Q_EMIT asyncDone(); +            }); + +        auto inptr  = std::shared_ptr<QIODevice>(new QBuffer(&plainBa)); +        inptr->open(QIODevice::ReadOnly); +        auto outptr = std::shared_ptr<QIODevice>(new QBuffer(&cipherText)); +        outptr->open(QIODevice::WriteOnly); + +        job->start(keys, inptr, outptr, Context::AlwaysTrust); +        QSignalSpy spy (this, SIGNAL(asyncDone())); +        Q_ASSERT(spy.wait()); +    } +      void testSymmetricEncryptDecrypt()      {          auto ctx = Context::createForProtocol(OpenPGP); | 
