Skip to content

Commit 4387440

Browse files
committed
Add test for mktime and localtime (esp8266#1745)
1 parent e7a529e commit 4387440

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

tests/device/test_time/test_time.ino

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,41 @@ TEST_CASE("Can sync time", "[time]")
3535
delay(100);
3636
}
3737
{
38-
time_t now = time(nullptr);
39-
Serial.println(ctime(&now));
38+
time_t now = time(nullptr);
39+
Serial.println(ctime(&now));
4040
}
4141
CHECK(false);
4242
}
4343

44+
TEST_CASE("#1745 mktime and localtime", "[time]")
45+
{
46+
struct tm tm_in;
47+
struct tm tm_out;
48+
49+
const int years[] = {2012, 2013, 2014};
50+
const time_t timestamps[] = {1332640800, 1364176800, 1395712800};
51+
52+
for (int i = 0; i < sizeof(years)/sizeof(years[0]); ++i) {
53+
tm_in.tm_year = years[i] - 1900;
54+
tm_in.tm_mon = 2;
55+
tm_in.tm_mday = 25;
56+
tm_in.tm_hour = 2;
57+
tm_in.tm_min = 0;
58+
tm_in.tm_sec = 0;
59+
tm_in.tm_wday = 0;
60+
time_t ts = mktime(&tm_in);
61+
CHECK(ts == timestamps[i]);
62+
localtime_r(&ts, &tm_out);
63+
CHECK(tm_in.tm_year == tm_out.tm_year);
64+
CHECK(tm_in.tm_mon == tm_out.tm_mon );
65+
CHECK(tm_in.tm_mday == tm_out.tm_mday);
66+
CHECK(tm_in.tm_hour == tm_out.tm_hour);
67+
CHECK(tm_in.tm_min == tm_out.tm_min );
68+
CHECK(tm_in.tm_sec == tm_out.tm_sec );
69+
CHECK(tm_in.tm_wday == tm_out.tm_wday);
70+
}
71+
}
72+
4473
void loop()
4574
{
4675
}

0 commit comments

Comments
 (0)