mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
89 lines
3 KiB
C++
89 lines
3 KiB
C++
![]() |
/*
|
||
|
Copyright (C) 2010 Casey Link <unnamedrambler@gmail.com>
|
||
|
Copyright (C) 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
|
||
|
|
||
|
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 "testfreeperiodmodel.h"
|
||
|
#include "modeltest.h"
|
||
|
#include "../freeperiodmodel.h"
|
||
|
|
||
|
#include <KCalCore/Period>
|
||
|
#include <KCalCore/Duration>
|
||
|
|
||
|
#include <KDebug>
|
||
|
|
||
|
#include <qtest_kde.h>
|
||
|
|
||
|
QTEST_KDEMAIN( FreePeriodModelTest, NoGUI )
|
||
|
using namespace IncidenceEditorNG;
|
||
|
|
||
|
void FreePeriodModelTest::testModelValidity()
|
||
|
{
|
||
|
FreePeriodModel * model = new FreePeriodModel( this );
|
||
|
new ModelTest( model, this );
|
||
|
|
||
|
const KDateTime dt1( QDate( 2010, 7, 24 ), QTime( 7, 0, 0 ), KDateTime::UTC );
|
||
|
const KDateTime dt2( QDate( 2010, 7, 24 ), QTime( 10, 0, 0 ), KDateTime::UTC );
|
||
|
|
||
|
KCalCore::Period::List list;
|
||
|
|
||
|
list << KCalCore::Period( dt1, KCalCore::Duration( 60 * 60 ) );
|
||
|
list << KCalCore::Period( dt2, KCalCore::Duration( 60 * 60 ) );
|
||
|
|
||
|
QVERIFY( model->rowCount() == 0 );
|
||
|
model->slotNewFreePeriods( list );
|
||
|
QCOMPARE( model->rowCount(), 2 );
|
||
|
}
|
||
|
|
||
|
void FreePeriodModelTest::testSplitByDay()
|
||
|
{
|
||
|
FreePeriodModel * model = new FreePeriodModel( this );
|
||
|
new ModelTest( model, this );
|
||
|
|
||
|
const KDateTime startDt( QDate( 2010, 7, 24 ), QTime( 8, 0, 0 ), KDateTime::UTC );
|
||
|
const KDateTime endDt( QDate( 2010, 7, 25 ), QTime( 8, 0, 0 ), KDateTime::UTC );
|
||
|
|
||
|
KCalCore::Period::List list;
|
||
|
|
||
|
// This period goes from 8am on the 24th to 8am on the 25th
|
||
|
list << KCalCore::Period( startDt, endDt );
|
||
|
|
||
|
QVERIFY( model->rowCount() == 0 );
|
||
|
|
||
|
// as part of adding the new periods
|
||
|
// the model should split the above period into two
|
||
|
// one from 8am-12 on the 24th, and the second from 00-08 on the 25th
|
||
|
model->slotNewFreePeriods( list );
|
||
|
|
||
|
const KDateTime endPeriod1( QDate( 2010, 7, 24 ), QTime( 23, 59, 59, 999 ), KDateTime::UTC );
|
||
|
const KDateTime startPeriod2( QDate( 2010, 7, 25 ), QTime( 0, 0, 0, 0 ), KDateTime::UTC );
|
||
|
|
||
|
QModelIndex index = model->index( 0, 0 );
|
||
|
KCalCore::Period period1 =
|
||
|
model->data( index, FreePeriodModel::PeriodRole ).value<KCalCore::Period>();
|
||
|
index = model->index( 1, 0 );
|
||
|
KCalCore::Period period2 =
|
||
|
model->data( index, FreePeriodModel::PeriodRole ).value<KCalCore::Period>();
|
||
|
|
||
|
QCOMPARE( period1.start(), startDt );
|
||
|
QCOMPARE( period1.end(), endPeriod1 );
|
||
|
QCOMPARE( period2.start(), startPeriod2 );
|
||
|
QCOMPARE( period2.end(), endDt );
|
||
|
}
|
||
|
|