1 /*=========================================================================
2
3 Library: CTK
4
5 Copyright (c) Isomics Inc.
6
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0.txt
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18
19 =========================================================================*/
20
21 // Qt includes
22 #include <QApplication>
23 #include <QSignalSpy>
24 #include <QTimer>
25
26 // CTK includes
27 #include "ctkDateRangeWidget.h"
28
29 // STD includes
30 #include <cstdlib>
31 #include <iostream>
32
33 //-----------------------------------------------------------------------------
ctkDateRangeWidgetTest1(int argc,char * argv[])34 int ctkDateRangeWidgetTest1(int argc, char * argv [] )
35 {
36 QApplication app(argc, argv);
37
38 QDateTime today = QDateTime(QDate::currentDate());
39 QDateTime tomorrow = today.addDays(1);
40 QDateTime yesterday = today.addDays(-1);
41 QDateTime lastWeek = today.addDays(-7);
42 QDateTime lastMonth = today.addMonths(-1);
43 ctkDateRangeWidget dateRange;
44
45 if (dateRange.displayTime())
46 {
47 std::cerr << "ctkDateRangeWidget::ctkDateRangeWidget(): "
48 << "wrong default displayTime()" << std::endl;
49 return EXIT_FAILURE;
50 }
51 if (!dateRange.isAnyDate())
52 {
53 std::cerr << "ctkDateRangeWidget::ctkDateRangeWidget(): "
54 << "default date range failed: "
55 << qPrintable(dateRange.startDateTime().toString()) << " "
56 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
57 return EXIT_FAILURE;
58 }
59
60 dateRange.setToday();
61 if (dateRange.isAnyDate() ||
62 dateRange.startDateTime() != today ||
63 dateRange.endDateTime() != tomorrow)
64 {
65 std::cerr << "ctkDateRangeWidget::setToday(): "
66 << qPrintable(dateRange.startDateTime().toString()) << " "
67 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
68 return EXIT_FAILURE;
69 }
70
71 dateRange.setYesterday();
72 if (dateRange.isAnyDate() ||
73 dateRange.startDateTime() != yesterday ||
74 dateRange.endDateTime() != today)
75 {
76 std::cerr << "ctkDateRangeWidget::setYesterday(): "
77 << qPrintable(dateRange.startDateTime().toString()) << " "
78 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
79 return EXIT_FAILURE;
80 }
81
82 dateRange.setLastWeek();
83 if (dateRange.isAnyDate() ||
84 dateRange.startDateTime() != lastWeek ||
85 dateRange.endDateTime() != today)
86 {
87 std::cerr << "ctkDateRangeWidget::setLastWeek(): "
88 << qPrintable(dateRange.startDateTime().toString()) << " "
89 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
90 return EXIT_FAILURE;
91 }
92
93 dateRange.setLastMonth();
94 if (dateRange.isAnyDate() ||
95 dateRange.startDateTime() != lastMonth ||
96 dateRange.endDateTime() != today)
97 {
98 std::cerr << "ctkDateRangeWidget::setLastMonth(): "
99 << qPrintable(dateRange.startDateTime().toString()) << " "
100 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
101 return EXIT_FAILURE;
102 }
103
104 dateRange.setAnyDate();
105 if (!dateRange.isAnyDate() ||
106 dateRange.startDateTime() == lastMonth ||
107 dateRange.endDateTime() == today)
108 {
109 std::cerr << "ctkDateRangeWidget::setAnyDate(): "
110 << qPrintable(dateRange.startDateTime().toString()) << " "
111 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
112 return EXIT_FAILURE;
113 }
114
115 dateRange.setDateTimeRange(QDateTime(QDate(-2, -9,12345678)),
116 QDateTime(QDate(2010, 15, 32)));
117 if (!dateRange.isAnyDate() ||
118 dateRange.startDateTime() == lastMonth ||
119 dateRange.endDateTime() == today)
120 {
121 std::cerr << "ctkDateRangeWidget::setDateTimeRange(): "
122 << qPrintable(dateRange.startDateTime().toString()) << " "
123 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
124 return EXIT_FAILURE;
125 }
126
127 dateRange.setDateTimeRange(today, tomorrow);
128 if (dateRange.isAnyDate() ||
129 !dateRange.startDateTime().isValid() ||
130 !dateRange.endDateTime().isValid())
131 {
132 std::cerr << "ctkDateRangeWidget::setDateTimeRange(): "
133 << qPrintable(dateRange.startDateTime().toString()) << " "
134 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
135 return EXIT_FAILURE;
136 }
137
138 QDateTime oldStart = dateRange.startDateTime();
139 QDateTime oldEnd = dateRange.endDateTime();
140 dateRange.setSelectRange();
141 if (dateRange.startDateTime() != oldStart ||
142 dateRange.endDateTime() != oldEnd)
143 {
144 std::cerr << "ctkDateRangeWidget::setSelectRange(): "
145 << qPrintable(dateRange.startDateTime().toString()) << " "
146 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
147 return EXIT_FAILURE;
148 }
149
150 dateRange.setDisplayTime(true);
151 if (!dateRange.displayTime())
152 {
153 std::cerr << "ctkDateRangeWidget::setSelectRange(): "
154 << qPrintable(dateRange.startDateTime().toString()) << " "
155 << qPrintable(dateRange.endDateTime().toString()) << std::endl;
156 return EXIT_FAILURE;
157 }
158
159 QSignalSpy startSpy(&dateRange, SIGNAL(startDateTimeChanged(QDateTime)));
160 QSignalSpy endSpy(&dateRange, SIGNAL(endDateTimeChanged(QDateTime)));
161
162 dateRange.setLastWeek();
163 if (startSpy.count() != 1 || endSpy.count() != 1)
164 {
165 std::cerr << "ctkDateRangeWidget::setLastWeek(): "
166 << startSpy.count() << " " << endSpy.count() << std::endl;
167 return EXIT_FAILURE;
168 }
169 startSpy.clear();
170 endSpy.clear();
171
172 dateRange.setLastMonth();
173 if (startSpy.count() != 1 || endSpy.count() != 0)
174 {
175 std::cerr << "ctkDateRangeWidget::setLastMonth(): "
176 << startSpy.count() << " " << endSpy.count() << std::endl;
177 return EXIT_FAILURE;
178 }
179
180 dateRange.show();
181 if (argc < 2 || QString(argv[1]) != "-I" )
182 {
183 QTimer::singleShot(200, &app, SLOT(quit()));
184 }
185 return app.exec();
186 }
187
188