File indexing completed on 2024-05-12 04:20:41

0001 /*
0002  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
0003  *
0004  * This file is part of the KGantt library.
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include "kganttglobal.h"
0010 
0011 using namespace KGantt;
0012 
0013 
0014 DateTimeSpan::DateTimeSpan()
0015 {
0016 }
0017 
0018 DateTimeSpan::DateTimeSpan( const QDateTime& start, const QDateTime& end )
0019     : m_start( start ), m_end( end )
0020 {
0021 }
0022 
0023 DateTimeSpan::DateTimeSpan( const DateTimeSpan& other )
0024 {
0025     *this = other;
0026 }
0027 
0028 DateTimeSpan::~DateTimeSpan()
0029 {
0030 }
0031 
0032 DateTimeSpan& DateTimeSpan::operator=( const DateTimeSpan& other )
0033 {
0034     if ( this != &other ) {
0035         m_start = other.m_start;
0036         m_end = other.m_end;
0037     }
0038     return *this;
0039 }
0040 
0041 bool DateTimeSpan::isValid() const
0042 {
0043     return m_start.isValid() && m_end.isValid();
0044 }
0045 
0046 bool DateTimeSpan::equals( const DateTimeSpan& other ) const
0047 {
0048     return m_start==other.m_start && m_end==other.m_end;
0049 }
0050 
0051 #ifndef QT_NO_DEBUG_STREAM
0052 
0053 QDebug operator<<( QDebug dbg, KGantt::ItemDataRole r)
0054 {
0055   switch (r) {
0056   case KGantt::StartTimeRole:      dbg << "KGantt::StartTimeRole"; break;
0057   case KGantt::EndTimeRole:        dbg << "KGantt::EndTimeRole"; break;
0058   case KGantt::TaskCompletionRole: dbg << "KGantt::TaskCompletionRole"; break;
0059   case KGantt::ItemTypeRole:       dbg << "KGantt::ItemTypeRole"; break;
0060   case KGantt::LegendRole:         dbg << "KGantt::LegendRole"; break;
0061   default: dbg << static_cast<Qt::ItemDataRole>(r);
0062   }
0063   return dbg;
0064 }
0065 
0066 QDebug operator<<( QDebug dbg, KGantt::ItemType t)
0067 {
0068     switch ( t ) {
0069     case KGantt::TypeNone:        dbg << "KGantt::TypeNone"; break;
0070     case KGantt::TypeEvent:       dbg << "KGantt::TypeEvent"; break;
0071     case KGantt::TypeTask:        dbg << "KGantt::TypeTask"; break;
0072     case KGantt::TypeSummary:     dbg << "KGantt::TypeSummary"; break;
0073     case KGantt::TypeMulti:       dbg << "KGantt::TypeMulti"; break;
0074     case KGantt::TypeUser:        dbg << "KGantt::TypeUser"; break;
0075     default: dbg << static_cast<int>(t);
0076     }
0077     return dbg;
0078 }
0079 
0080 QDebug operator<<( QDebug dbg, const KGantt::Span& s )
0081 {
0082     dbg << "KGantt::Span[ start="<<s.start()<<" length="<<s.length()<<"]";
0083     return dbg;
0084 }
0085 QDebug operator<<( QDebug dbg, const KGantt::DateTimeSpan& s )
0086 {
0087     dbg << "KGantt::DateTimeSpan[ start="<<s.start()<<" end="<<s.end()<<"]";
0088     return dbg;
0089 }
0090 
0091 #endif /* QT_NO_DEBUG_STREAM */
0092 
0093 #ifndef KDAB_NO_UNIT_TESTS
0094 
0095 #include <ostream>
0096 
0097 static std::ostream& operator<<( std::ostream& os, const Span& span )
0098 {
0099     os << "Span[ start="<<span.start()<<", length="<<span.length()<<"]";
0100     return os;
0101 }
0102 
0103 static std::ostream& operator<<( std::ostream& os, const DateTimeSpan& span )
0104 {
0105 #ifdef QT_NO_STL
0106     os << "DateTimeSpan[ start="<<span.start().toString().toLatin1().constData()
0107        << ", end="<<span.end().toString().toLatin1().constData() << "]";
0108 #else
0109     os << "DateTimeSpan[ start="<<span.start().toString().toStdString()
0110        << ", end="<<span.end().toString().toStdString() << "]";
0111 #endif
0112     return os;
0113 }
0114 
0115 #include "unittest/test.h"
0116 
0117 KDAB_SCOPED_UNITTEST_SIMPLE( KGantt, Span, "test" ) {
0118     Span s1;
0119     assertFalse( s1.isValid() );
0120     s1.setStart( 10. );
0121     s1.setLength( 2. );
0122 
0123     Span s2( s1.start(), s1.length() );
0124     assertEqual( s1, s2 );
0125 }
0126 
0127 KDAB_SCOPED_UNITTEST_SIMPLE( KGantt, DateTimeSpan, "test" ) {
0128     DateTimeSpan s1;
0129     assertFalse( s1.isValid() );
0130     QDateTime dt = QDateTime::currentDateTime();
0131     s1.setStart( dt );
0132     assertTrue( dt.isValid() );
0133     s1.setEnd( dt.addDays( 1 ) );
0134 
0135     DateTimeSpan s2( dt, dt.addDays( 1 ) );
0136 
0137     assertEqual( s1, s2 );
0138 
0139     DateTimeSpan s3;
0140 
0141     assertNotEqual( s1, s3 );
0142 }
0143 #endif /* KDAB_NO_UNIT_TESTS */