1111#include " KDDateTime.h"
1212#include " KDSoapValue.h"
1313#include < QTest>
14+ #include < QTimeZone>
1415
1516class KDDateTimeTest : public QObject
1617{
@@ -35,6 +36,63 @@ private Q_SLOTS:
3536 QCOMPARE (inputDateTime.timeZone (), outputDateTime.timeZone ());
3637 QCOMPARE (inputDateTime.toDateString (), outputDateTime.toDateString ());
3738 }
39+
40+ void testSetTimeZone_data ()
41+ {
42+ QTest::addColumn<QString>(" timeZone" );
43+ QTest::addColumn<QString>(" expected" );
44+
45+ // Example countries and their offsets.
46+
47+ QTest::newRow (" empty" ) << " " << QDateTime ({2020 , 1 , 1 }, {0 , 0 }, QTimeZone::systemTimeZone ()).timeZoneAbbreviation ();
48+ QTest::newRow (" Z" ) << " Z" << " UTC" ;
49+ QTest::newRow (" US Minor outlying islands" ) << " -12:00" << " UTC-12:00" ;
50+ QTest::newRow (" New Zealand (Niue)" ) << " -11:00" << " UTC-11:00" ;
51+ QTest::newRow (" Hawaii" ) << " -10:00" << " UTC-10:00" ;
52+ QTest::newRow (" Marquesas Islands (French Polynesia)" ) << " -09:30" << " UTC-09:30" ;
53+ QTest::newRow (" Alaska" ) << " -09:00" << " UTC-09:00" ;
54+ QTest::newRow (" US Pacific" ) << " -08:00" << " UTC-08:00" ;
55+ QTest::newRow (" US Mountain" ) << " -07:00" << " UTC-07:00" ;
56+ QTest::newRow (" US Central" ) << " -06:00" << " UTC-06:00" ;
57+ QTest::newRow (" US Eastern" ) << " -05:00" << " UTC-05:00" ;
58+ QTest::newRow (" US Atlantic" ) << " -04:00" << " UTC-04:00" ;
59+ QTest::newRow (" Canada Newfoundland" ) << " -03:30" << " UTC-03:30" ;
60+ QTest::newRow (" Argentina" ) << " -03:00" << " UTC-03:00" ;
61+ QTest::newRow (" Greenland" ) << " -02:00" << " UTC-02:00" ;
62+ QTest::newRow (" Cape Verde" ) << " -01:00" << " UTC-01:00" ;
63+ QTest::newRow (" United Kingdom 1" ) << " +00:00" << " UTC" ;
64+ QTest::newRow (" United Kingdom 2" ) << " -00:00" << " UTC" ;
65+ QTest::newRow (" France (Metropolitan)" ) << " +01:00" << " UTC+01:00" ;
66+ QTest::newRow (" Greece" ) << " +02:00" << " UTC+02:00" ;
67+ QTest::newRow (" Turkey" ) << " +03:00" << " UTC+03:00" ;
68+ QTest::newRow (" Iran" ) << " +03:30" << " UTC+03:30" ;
69+ QTest::newRow (" Seychelles" ) << " +04:00" << " UTC+04:00" ;
70+ QTest::newRow (" Afghanistan" ) << " +04:30" << " UTC+04:30" ;
71+ QTest::newRow (" Kazakhstan" ) << " +05:00" << " UTC+05:00" ;
72+ QTest::newRow (" India" ) << " +05:30" << " UTC+05:30" ;
73+ QTest::newRow (" Bhutan" ) << " +06:00" << " UTC+06:00" ;
74+ QTest::newRow (" Myanmar" ) << " +06:30" << " UTC+06:30" ;
75+ QTest::newRow (" Cambodia" ) << " +07:00" << " UTC+07:00" ;
76+ QTest::newRow (" Western Australia" ) << " +08:00" << " UTC+08:00" ;
77+ QTest::newRow (" Western Australia (Eucla)" ) << " +08:45" << " UTC+08:45" ;
78+ QTest::newRow (" Japan" ) << " +09:00" << " UTC+09:00" ;
79+ QTest::newRow (" Australia (Adelaide)" ) << " +09:30" << " UTC+09:30" ;
80+ QTest::newRow (" Australia (Sydney)" ) << " +10:00" << " UTC+10:00" ;
81+ QTest::newRow (" Australia (Lord Howe Island)" ) << " +10:30" << " UTC+10:30" ;
82+ QTest::newRow (" Australia (Norfolk Island)" ) << " +11:00" << " UTC+11:00" ;
83+ QTest::newRow (" New Zealand" ) << " +12:00" << " UTC+12:00" ;
84+ QTest::newRow (" New Zealand (Chatham Islands)" ) << " +12:45" << " UTC+12:45" ;
85+ QTest::newRow (" Samoa" ) << " +13:00" << " UTC+13:00" ;
86+ QTest::newRow (" Kiribati (Line Islands)" ) << " +14:00" << " UTC+14:00" ;
87+ }
88+
89+ void testSetTimeZone ()
90+ {
91+ QFETCH (QString, timeZone);
92+ QFETCH (QString, expected);
93+
94+ QCOMPARE (KDDateTime::fromDateString (" 2020-01-01T00:00" + timeZone).timeZoneAbbreviation (), expected);
95+ }
3896};
3997
4098QTEST_MAIN (KDDateTimeTest)
0 commit comments