mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
242 lines
7.8 KiB
C++
242 lines
7.8 KiB
C++
/*
|
|
This file is part of the kcalcore library.
|
|
|
|
Copyright (C) 2006,2008 Allen Winter <winter@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
#include "testevent.h"
|
|
#include "../event.h"
|
|
#include "../todo.h"
|
|
|
|
#include <qtest_kde.h>
|
|
QTEST_KDEMAIN(EventTest, NoGUI)
|
|
|
|
Q_DECLARE_METATYPE(KCalCore::Incidence::DateTimeRole)
|
|
|
|
using namespace KCalCore;
|
|
|
|
void EventTest::testSetRoles_data()
|
|
{
|
|
QTest::addColumn<KDateTime>("originalDtStart");
|
|
QTest::addColumn<KDateTime>("originalDtEnd");
|
|
|
|
QTest::addColumn<KCalCore::Incidence::DateTimeRole>("setRole");
|
|
QTest::addColumn<KDateTime>("dateTimeToSet");
|
|
QTest::addColumn<KDateTime>("expectedDtStart");
|
|
QTest::addColumn<KDateTime>("expectedDtEnd");
|
|
|
|
|
|
const KDateTime todayDate(QDate::currentDate()); // all day event
|
|
const KDateTime todayDateTime = KDateTime::currentUtcDateTime();
|
|
|
|
QTest::newRow("dnd 0 duration") << todayDate << todayDate << KCalCore::Incidence::RoleDnD
|
|
<< todayDateTime << todayDateTime << todayDateTime.addSecs(3600);
|
|
}
|
|
|
|
void EventTest::testSetRoles()
|
|
{
|
|
QFETCH(KDateTime, originalDtStart);
|
|
QFETCH(KDateTime, originalDtEnd);
|
|
QFETCH(KCalCore::Incidence::DateTimeRole, setRole);
|
|
|
|
QFETCH(KDateTime, dateTimeToSet);
|
|
QFETCH(KDateTime, expectedDtStart);
|
|
QFETCH(KDateTime, expectedDtEnd);
|
|
|
|
Event::Ptr event = Event::Ptr(new Event());
|
|
event->setDtStart(originalDtStart);
|
|
event->setDtEnd(originalDtEnd);
|
|
event->setAllDay(originalDtStart.isDateOnly());
|
|
|
|
event->setDateTime(dateTimeToSet, setRole);
|
|
QCOMPARE(event->dtStart(), expectedDtStart);
|
|
QCOMPARE(event->dtEnd(), expectedDtEnd);
|
|
}
|
|
|
|
void EventTest::testValidity()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Event *event = new Event();
|
|
event->setDtStart(KDateTime(dt));
|
|
event->setDtEnd(KDateTime(dt).addDays(1));
|
|
event->setSummary("Event1 Summary");
|
|
event->setDescription("This is a description of the first event");
|
|
event->setLocation("the place");
|
|
//KDE5: QVERIFY( event->typeStr() == i18n( "event" ) );
|
|
QVERIFY(event->summary() == "Event1 Summary");
|
|
QVERIFY(event->location() == "the place");
|
|
QVERIFY(event->type() == Incidence::TypeEvent);
|
|
}
|
|
|
|
void EventTest::testCompare()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Event event1;
|
|
event1.setDtStart(KDateTime(dt));
|
|
event1.setDtEnd(KDateTime(dt).addDays(1));
|
|
event1.setSummary("Event1 Summary");
|
|
event1.setDescription("This is a description of the first event");
|
|
event1.setLocation("the place");
|
|
|
|
Event event2;
|
|
event2.setDtStart(KDateTime(dt).addDays(1));
|
|
event2.setDtEnd(KDateTime(dt).addDays(2));
|
|
event2.setSummary("Event2 Summary");
|
|
event2.setDescription("This is a description of the second event");
|
|
event2.setLocation("the other place");
|
|
|
|
QVERIFY(!(event1 == event2));
|
|
QVERIFY(event1.dtEnd() == event2.dtStart());
|
|
QVERIFY(event2.summary() == "Event2 Summary");
|
|
}
|
|
|
|
void EventTest::testClone()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Event event1;
|
|
event1.setDtStart(KDateTime(dt));
|
|
event1.setDtEnd(KDateTime(dt).addDays(1));
|
|
event1.setSummary("Event1 Summary");
|
|
event1.setDescription("This is a description of the first event");
|
|
event1.setLocation("the place");
|
|
|
|
Event *event2 = event1.clone();
|
|
QVERIFY(event1.summary() == event2->summary());
|
|
QVERIFY(event1.dtStart() == event2->dtStart());
|
|
QVERIFY(event1.dtEnd() == event2->dtEnd());
|
|
QVERIFY(event1.description() == event2->description());
|
|
QVERIFY(event1.location() == event2->location());
|
|
}
|
|
|
|
void EventTest::testCopy()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Event event1;
|
|
event1.setDtStart(KDateTime(dt));
|
|
event1.setDtEnd(KDateTime(dt).addDays(1));
|
|
event1.setSummary("Event1 Summary");
|
|
event1.setDescription("This is a description of the first event");
|
|
event1.setLocation("the place");
|
|
event1.setTransparency(Event::Transparent);
|
|
|
|
Event event2 = event1;
|
|
QVERIFY(event1.summary() == event2.summary());
|
|
QVERIFY(event1.dtStart() == event2.dtStart());
|
|
QVERIFY(event1.dtEnd() == event2.dtEnd());
|
|
QVERIFY(event1.description() == event2.description());
|
|
QVERIFY(event1.location() == event2.location());
|
|
}
|
|
|
|
void EventTest::testCopyIncidence()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Todo todo;
|
|
todo.setDtStart(KDateTime(dt));
|
|
todo.setSummary(QLatin1String("Event1 Summary"));
|
|
todo.setDescription(QLatin1String("This is a description of the first event"));
|
|
todo.setLocation(QLatin1String("the place"));
|
|
|
|
Event event(todo);
|
|
QCOMPARE(event.uid(), todo.uid());
|
|
QCOMPARE(event.dtStart(), todo.dtStart());
|
|
QCOMPARE(event.summary(), todo.summary());
|
|
QCOMPARE(event.description(), todo.description());
|
|
QCOMPARE(event.location(), todo.location());
|
|
}
|
|
|
|
void EventTest::testAssign()
|
|
{
|
|
QDate dt = QDate::currentDate();
|
|
Event event1;
|
|
event1.setDtStart(KDateTime(dt));
|
|
event1.setDtEnd(KDateTime(dt).addDays(1));
|
|
event1.setSummary("Event1 Summary");
|
|
event1.setDescription("This is a description of the first event");
|
|
event1.setLocation("the place");
|
|
event1.setTransparency(Event::Transparent);
|
|
|
|
Event event2 = event1;
|
|
QVERIFY(event1 == event2);
|
|
}
|
|
|
|
void EventTest::testSerializer_data()
|
|
{
|
|
QTest::addColumn<KCalCore::Event::Ptr>("event");
|
|
KDateTime today = KDateTime::currentUtcDateTime();
|
|
KDateTime yesterday = today.addDays(-1);
|
|
|
|
Event::Ptr event1 = Event::Ptr(new Event());
|
|
Attendee::Ptr attendee1(new Attendee("fred", "fred@flintstone.com"));
|
|
event1->addAttendee(attendee1);
|
|
event1->setDtStart(yesterday);
|
|
event1->setDtEnd(today);
|
|
|
|
Event::Ptr event2 = Event::Ptr(new Event());
|
|
Attendee::Ptr attendee2(new Attendee("fred", "fred@flintstone.com"));
|
|
event2->addAttendee(attendee2);
|
|
event2->setDtStart(yesterday);
|
|
event2->setDtEnd(today);
|
|
event2->setAllDay(true);
|
|
|
|
event2->addComment("comment1");
|
|
event2->setUrl(QUrl("http://someurl"));
|
|
|
|
event2->setCustomProperty("app", "key", "value");
|
|
|
|
// Remaining properties tested in testtodo.cpp
|
|
|
|
QTest::newRow("event") << event1;
|
|
QTest::newRow("event2") << event2;
|
|
}
|
|
|
|
void EventTest::testSerializer()
|
|
{
|
|
QFETCH(KCalCore::Event::Ptr, event);
|
|
IncidenceBase::Ptr incidenceBase = event.staticCast<KCalCore::IncidenceBase>();
|
|
|
|
QByteArray array;
|
|
QDataStream stream(&array, QIODevice::WriteOnly);
|
|
stream << incidenceBase;
|
|
|
|
Event::Ptr event2 = Event::Ptr(new Event());
|
|
IncidenceBase::Ptr incidenceBase2 = event2.staticCast<KCalCore::IncidenceBase>();
|
|
QVERIFY(*event != *event2);
|
|
QDataStream stream2(&array, QIODevice::ReadOnly);
|
|
stream2 >> incidenceBase2;
|
|
QVERIFY(*event == *event2);
|
|
}
|
|
|
|
void EventTest::testDurationDtEnd()
|
|
{
|
|
const QDate dt = QDate::currentDate();
|
|
|
|
{
|
|
Event event;
|
|
event.setDtStart(KDateTime(dt));
|
|
event.setDtEnd(KDateTime(dt).addDays(1));
|
|
QCOMPARE(event.hasEndDate(), true);
|
|
QCOMPARE(event.hasDuration(), false);
|
|
}
|
|
{
|
|
Event event;
|
|
event.setDtStart(KDateTime(dt));
|
|
event.setDuration(Duration(KDateTime(dt), KDateTime(dt).addDays(1)));
|
|
QCOMPARE(event.hasDuration(), true);
|
|
QCOMPARE(event.hasEndDate(), false);
|
|
}
|
|
|
|
}
|