1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/*
* SPDX-FileCopyrightText: 2014 Bensi Mario <mbensi@ipsquad.net>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include <testlib/qtest_zanshin.h>
#include <Akonadi/Item>
#include <KCalendarCore/Todo>
#include "domain/task.h"
#include "akonadi/akonadiserializer.h"
class SerializerBenchmark : public QObject
{
Q_OBJECT
Akonadi::Item createTestItem();
private slots:
void deserialize();
void checkPayloadAndDeserialize();
void deserializeAndDestroy();
void checkPayload();
};
Akonadi::Item SerializerBenchmark::createTestItem()
{
KCalendarCore::Todo::Ptr todo(new KCalendarCore::Todo);
todo->setSummary(QStringLiteral("summary"));
todo->setDescription(QStringLiteral("content"));
todo->setCompleted(false);
todo->setDtStart(QDate(2013, 11, 24).startOfDay());
todo->setDtDue(QDate(2014, 03, 01).startOfDay());
todo->setRelatedTo(QStringLiteral("5"));
// ... as payload of an item
Akonadi::Item item;
item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo"));
item.setPayload<KCalendarCore::Todo::Ptr>(todo);
return item;
}
void SerializerBenchmark::deserialize()
{
Akonadi::Item item = createTestItem();
Akonadi::Serializer serializer;
Domain::Task::Ptr task(new Domain::Task);
QBENCHMARK {
task = serializer.createTaskFromItem(item);
}
}
void SerializerBenchmark::checkPayloadAndDeserialize()
{
Akonadi::Item item = createTestItem();
Akonadi::Serializer serializer;
Domain::Task::Ptr task(new Domain::Task);
QBENCHMARK {
if (!item.hasPayload<KCalendarCore::Todo::Ptr>())
return;
auto todoCheck = item.payload<KCalendarCore::Todo::Ptr>();
if (todoCheck->relatedTo() != QLatin1StringView("5")) {
return;
}
task = serializer.createTaskFromItem(item);
}
}
void SerializerBenchmark::deserializeAndDestroy()
{
Akonadi::Item item = createTestItem();
Akonadi::Serializer serializer;
QBENCHMARK {
auto task = serializer.createTaskFromItem(item);
}
}
void SerializerBenchmark::checkPayload()
{
Akonadi::Item item = createTestItem();
QBENCHMARK {
if (!item.hasPayload<KCalendarCore::Todo::Ptr>())
return;
auto todoCheck = item.payload<KCalendarCore::Todo::Ptr>();
if (todoCheck->relatedTo() != QLatin1StringView("5")) {
return;
}
}
}
ZANSHIN_TEST_MAIN(SerializerBenchmark)
#include "serializerTest.moc"
|