MCPcopy Create free account
hub / github.com/SmingHub/Sming / checkSetTime

Method checkSetTime

tests/HostTests/modules/DateTime.cpp:182–226  ·  view source on GitHub ↗

Return number of dates checked

Source from the content-addressed store, hash-verified

180
181 // Return number of dates checked
182 unsigned checkSetTime(const FSTR::Array<TestDate>& dates, bool silent = false)
183 {
184 unsigned checkCount{0};
185
186 for(auto date : dates) {
187 const DateTime refDate(date.unixTimestamp);
188
189 if(!silent) {
190 Serial << "RefDate " << refDate.toFullDateTimeString() << endl;
191 }
192
193 auto check = [&](int secOffset, int minOffset, int hourOffset, int dayOffset) {
194 ++checkCount;
195 const int sec = secOffset + refDate.Second;
196 const int min = minOffset + refDate.Minute;
197 const int hour = hourOffset + refDate.Hour;
198 const int day = dayOffset + refDate.Day;
199 DateTime dt = DateTime ::toUnixTime(sec, min, hour, day, refDate.Month, refDate.Year);
200 time_t refTime = DateTime::toUnixTime(0, 0, 0, 1, refDate.Month, refDate.Year);
201 refTime += sec;
202 refTime += int64_t(min) * 60;
203 refTime += int64_t(hour) * 60 * 60;
204 refTime += int64_t(day - 1) * 24 * 60 * 60;
205 time_t calcTime = dt.toUnixTime();
206 if(calcTime == refTime) {
207 return;
208 }
209
210 char buf[100];
211 m_snprintf(buf, sizeof(buf), " (%ds, %dm %dh, %dd)", secOffset, minOffset, hourOffset, dayOffset);
212 Serial << _F("Check ") << DateTime(refTime).toFullDateTimeString() << buf << endl;
213 Serial << _F("Got ") << dt.toFullDateTimeString() << ", diff " << refTime - calcTime << endl;
214 REQUIRE_EQ(refTime, calcTime);
215 };
216
217 for(int offset = -10000; offset < 10000; offset += 555) {
218 check(offset, 0, 0, 0);
219 check(0, offset, 0, 0);
220 check(0, 0, offset, 0);
221 check(0, 0, 0, offset);
222 }
223 };
224
225 return checkCount;
226 }
227};
228
229void REGISTER_TEST(DateTime)

Callers

nothing calls this directly

Calls 4

m_snprintfFunction · 0.85
DateTimeClass · 0.85
toFullDateTimeStringMethod · 0.80
toUnixTimeMethod · 0.80

Tested by

no test coverage detected