diff options
author | Ruslan Kovalev <ruslan.a.kovalev@gmail.com> | 2022-02-10 16:46:44 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:44 +0300 |
commit | 59e19371de37995fcb36beb16cd6ec030af960bc (patch) | |
tree | fa68e36093ebff8b805462e9e6d331fe9d348214 /util/draft/datetime_ut.cpp | |
parent | 89db6fe2fe2c32d2a832ddfeb04e8d078e301084 (diff) | |
download | ydb-59e19371de37995fcb36beb16cd6ec030af960bc.tar.gz |
Restoring authorship annotation for Ruslan Kovalev <ruslan.a.kovalev@gmail.com>. Commit 1 of 2.
Diffstat (limited to 'util/draft/datetime_ut.cpp')
-rw-r--r-- | util/draft/datetime_ut.cpp | 368 |
1 files changed, 184 insertions, 184 deletions
diff --git a/util/draft/datetime_ut.cpp b/util/draft/datetime_ut.cpp index a5e065ef6e8..f959848d5ec 100644 --- a/util/draft/datetime_ut.cpp +++ b/util/draft/datetime_ut.cpp @@ -1,66 +1,66 @@ #include "datetime.h" #include <library/cpp/testing/unittest/registar.h> - + #include <util/string/builder.h> Y_UNIT_TEST_SUITE(TSimpleTMTest) { TString PrintMarker(const TString& test, int line) { return TStringBuilder() << "test " << test << " at line " << line; - } - + } + TString JoinMarker(const TString& marker, time_t t) { return TStringBuilder() << marker << " (tstamp=" << t << ")"; - } - + } + TString PrintMarker(const TString& test, int line, time_t t) { - return JoinMarker(PrintMarker(test, line), t); - } - + return JoinMarker(PrintMarker(test, line), t); + } + void AssertStructTmEqual(const TString& marker, const struct tm& tmt, const NDatetime::TSimpleTM& tms) { - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Sec, tmt.tm_sec, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Min, tmt.tm_min, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Hour, tmt.tm_hour, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.WDay, tmt.tm_wday, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.MDay, tmt.tm_mday, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Mon, tmt.tm_mon, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.YDay, tmt.tm_yday, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Year, tmt.tm_year, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.IsDst, tmt.tm_isdst, marker); -#ifndef _win_ - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.GMTOff, tmt.tm_gmtoff, marker); -#endif - } - + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Sec, tmt.tm_sec, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Min, tmt.tm_min, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Hour, tmt.tm_hour, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.WDay, tmt.tm_wday, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.MDay, tmt.tm_mday, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Mon, tmt.tm_mon, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.YDay, tmt.tm_yday, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Year, tmt.tm_year, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.IsDst, tmt.tm_isdst, marker); +#ifndef _win_ + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.GMTOff, tmt.tm_gmtoff, marker); +#endif + } + void AssertSimpleTM(const TString& mark, - const NDatetime::TSimpleTM& tms, - time_t tstamp, ui32 year, ui32 mon, ui32 mday, ui32 hour, ui32 minu, ui32 sec) { + const NDatetime::TSimpleTM& tms, + time_t tstamp, ui32 year, ui32 mon, ui32 mday, ui32 hour, ui32 minu, ui32 sec) { TString marker = JoinMarker(mark, tstamp); - struct tm tmt; - Zero(tmt); - GmTimeR(&tstamp, &tmt); - AssertStructTmEqual(marker, tmt, tms); - tmt = tms.AsStructTmUTC(); - time_t tstamp1 = TimeGM(&tmt); - UNIT_ASSERT_VALUES_EQUAL_C(tstamp, tstamp1, marker); - UNIT_ASSERT_VALUES_EQUAL_C(tstamp, tms.AsTimeT(), marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.RealYear(), year, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.RealMonth(), mon, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.MDay, mday, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Hour, hour, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Min, minu, marker); - UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Sec, sec, marker); - } - + struct tm tmt; + Zero(tmt); + GmTimeR(&tstamp, &tmt); + AssertStructTmEqual(marker, tmt, tms); + tmt = tms.AsStructTmUTC(); + time_t tstamp1 = TimeGM(&tmt); + UNIT_ASSERT_VALUES_EQUAL_C(tstamp, tstamp1, marker); + UNIT_ASSERT_VALUES_EQUAL_C(tstamp, tms.AsTimeT(), marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.RealYear(), year, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.RealMonth(), mon, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.MDay, mday, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Hour, hour, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Min, minu, marker); + UNIT_ASSERT_VALUES_EQUAL_C((int)tms.Sec, sec, marker); + } + Y_UNIT_TEST(TestLeap) { - using namespace NDatetime; + using namespace NDatetime; UNIT_ASSERT(LeapYearAD(2000)); UNIT_ASSERT(LeapYearAD(2012)); UNIT_ASSERT(!LeapYearAD(1999)); UNIT_ASSERT(LeapYearAD(2004)); UNIT_ASSERT(!LeapYearAD(1900)); - } - + } + Y_UNIT_TEST(TestYDayConversion) { using namespace NDatetime; ui32 month; @@ -81,151 +81,151 @@ Y_UNIT_TEST_SUITE(TSimpleTMTest) { Y_UNIT_TEST(SimpleTMTest) { using namespace NDatetime; - - tzset(); - - TSimpleTM::New(-1); //should not die here - - UNIT_ASSERT_VALUES_EQUAL((ui32)0, (ui32)TSimpleTM::New(0)); - UNIT_ASSERT((ui32)TSimpleTM::New(0).IsUTC()); + + tzset(); + + TSimpleTM::New(-1); //should not die here + + UNIT_ASSERT_VALUES_EQUAL((ui32)0, (ui32)TSimpleTM::New(0)); + UNIT_ASSERT((ui32)TSimpleTM::New(0).IsUTC()); time_t t = time(nullptr); - + { - struct tm tmt; - Zero(tmt); - gmtime_r(&t, &tmt); + struct tm tmt; + Zero(tmt); + gmtime_r(&t, &tmt); UNIT_ASSERT_VALUES_EQUAL_C((i64)t, (i64)TSimpleTM::New(t).AsTimeT(), ToString(t)); // time_t -> gmt tm -> time_t - UNIT_ASSERT_VALUES_EQUAL_C((i64)t, (i64)TSimpleTM::New(tmt).AsTimeT(), ToString(t)); // gmt tm -> time_t - AssertStructTmEqual(PrintMarker("UTC:time_t", __LINE__, t), - tmt, TSimpleTM::New(t)); - AssertStructTmEqual(PrintMarker("UTC:tm", __LINE__, t), - tmt, TSimpleTM::New(tmt)); - UNIT_ASSERT(TSimpleTM::New(t).IsUTC()); - UNIT_ASSERT(TSimpleTM::New(tmt).IsUTC()); + UNIT_ASSERT_VALUES_EQUAL_C((i64)t, (i64)TSimpleTM::New(tmt).AsTimeT(), ToString(t)); // gmt tm -> time_t + AssertStructTmEqual(PrintMarker("UTC:time_t", __LINE__, t), + tmt, TSimpleTM::New(t)); + AssertStructTmEqual(PrintMarker("UTC:tm", __LINE__, t), + tmt, TSimpleTM::New(tmt)); + UNIT_ASSERT(TSimpleTM::New(t).IsUTC()); + UNIT_ASSERT(TSimpleTM::New(tmt).IsUTC()); } - - { - struct tm tmt; - Zero(tmt); - localtime_r(&t, &tmt); - - UNIT_ASSERT_VALUES_EQUAL((i64)t, (i64)TSimpleTM::NewLocal(t).AsTimeT()); // time_t -> local tm -> time_t - UNIT_ASSERT_VALUES_EQUAL((i64)t, (i64)TSimpleTM::New(tmt).AsTimeT()); - AssertStructTmEqual(PrintMarker("local:time_t", __LINE__, t), - tmt, TSimpleTM::NewLocal(t)); - AssertStructTmEqual(PrintMarker("local:tm", __LINE__, t), - tmt, TSimpleTM::New(tmt)); - AssertStructTmEqual(PrintMarker("local:tm:RegenerateFields", __LINE__, t), - tmt, TSimpleTM::New(tmt).RegenerateFields()); - AssertStructTmEqual(PrintMarker("local:time_t:SetRealDate", __LINE__, t), + + { + struct tm tmt; + Zero(tmt); + localtime_r(&t, &tmt); + + UNIT_ASSERT_VALUES_EQUAL((i64)t, (i64)TSimpleTM::NewLocal(t).AsTimeT()); // time_t -> local tm -> time_t + UNIT_ASSERT_VALUES_EQUAL((i64)t, (i64)TSimpleTM::New(tmt).AsTimeT()); + AssertStructTmEqual(PrintMarker("local:time_t", __LINE__, t), + tmt, TSimpleTM::NewLocal(t)); + AssertStructTmEqual(PrintMarker("local:tm", __LINE__, t), + tmt, TSimpleTM::New(tmt)); + AssertStructTmEqual(PrintMarker("local:tm:RegenerateFields", __LINE__, t), + tmt, TSimpleTM::New(tmt).RegenerateFields()); + AssertStructTmEqual(PrintMarker("local:time_t:SetRealDate", __LINE__, t), tmt, TSimpleTM::NewLocal(t).SetRealDate(tmt.tm_year + 1900, tmt.tm_mon + 1, tmt.tm_mday, tmt.tm_hour, tmt.tm_min, tmt.tm_sec, tmt.tm_isdst)); - } - - { - TSimpleTM tt = TSimpleTM::New(0); - - tt.SetRealDate(2012, 3, 30, 5, 6, 7); - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1333083967, 2012, 3, 30, 5, 6, 7); - - tt.SetRealDate(2012, 3, 8, 5, 6, 7); - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1331183167, 2012, 3, 8, 5, 6, 7); - - tt.SetRealDate(2010, 10, 4, 5, 6, 7); - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1286168767, 2010, 10, 4, 5, 6, 7); - - tt.Add(TSimpleTM::F_MON); - AssertSimpleTM(PrintMarker("UTC:AddMonth", __LINE__), - tt, 1288847167, 2010, 11, 4, 5, 6, 7); - - tt.Add(TSimpleTM::F_DAY); - AssertSimpleTM(PrintMarker("UTC:AddDay", __LINE__), - tt, 1288933567, 2010, 11, 5, 5, 6, 7); - - tt.Add(TSimpleTM::F_YEAR); - AssertSimpleTM(PrintMarker("UTC:AddYear", __LINE__), - tt, 1320469567, 2011, 11, 5, 5, 6, 7); - + } + + { + TSimpleTM tt = TSimpleTM::New(0); + + tt.SetRealDate(2012, 3, 30, 5, 6, 7); + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1333083967, 2012, 3, 30, 5, 6, 7); + + tt.SetRealDate(2012, 3, 8, 5, 6, 7); + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1331183167, 2012, 3, 8, 5, 6, 7); + + tt.SetRealDate(2010, 10, 4, 5, 6, 7); + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1286168767, 2010, 10, 4, 5, 6, 7); + + tt.Add(TSimpleTM::F_MON); + AssertSimpleTM(PrintMarker("UTC:AddMonth", __LINE__), + tt, 1288847167, 2010, 11, 4, 5, 6, 7); + + tt.Add(TSimpleTM::F_DAY); + AssertSimpleTM(PrintMarker("UTC:AddDay", __LINE__), + tt, 1288933567, 2010, 11, 5, 5, 6, 7); + + tt.Add(TSimpleTM::F_YEAR); + AssertSimpleTM(PrintMarker("UTC:AddYear", __LINE__), + tt, 1320469567, 2011, 11, 5, 5, 6, 7); + for (ui32 i = 0; i < 365; ++i) { - tt.Add(TSimpleTM::F_DAY); + tt.Add(TSimpleTM::F_DAY); } - - AssertSimpleTM(PrintMarker("UTC:365*AddDay", __LINE__), - tt, 1352005567, 2012, 11, 4, 5, 6, 7); - - tt.Add(TSimpleTM::F_MON, -10); - AssertSimpleTM(PrintMarker("UTC:AddMonth(-10)", __LINE__), - tt, 1325653567, 2012, 1, 4, 5, 6, 7); - - tt.Add(TSimpleTM::F_HOUR, -24 * 4 - 6); - AssertSimpleTM(PrintMarker("UTC:AddHour(-102)", __LINE__), - tt, 1325286367, 2011, 12, 30, 23, 6, 7); - } - - { - TSimpleTM tt = TSimpleTM::New(); - - tt.SetRealDate(2012, 2, 29); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1330473600, 2012, 2, 29, 0, 0, 0); - - tt.SetRealDate(2012, 2, 29); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1330473600, 2012, 2, 29, 0, 0, 0); - - tt.SetRealDate(2013, 12, 28); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1388188800, 2013, 12, 28, 0, 0, 0); - - tt.SetRealDate(2012, 10, 23); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1350950400, 2012, 10, 23, 0, 0, 0); - - tt.SetRealDate(2013, 3, 16); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1363392000, 2013, 3, 16, 0, 0, 0); - - tt.SetRealDate(2013, 2, 17); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1361059200, 2013, 2, 17, 0, 0, 0); - - tt.SetRealDate(2012, 12, 23); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1356220800, 2012, 12, 23, 0, 0, 0); - - tt.SetRealDate(2012, 5, 17); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1337212800, 2012, 5, 17, 0, 0, 0); - - tt.SetRealDate(2012, 6, 15); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1339718400, 2012, 6, 15, 0, 0, 0); - - tt.SetRealDate(2009, 3, 17); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1237248000, 2009, 3, 17, 0, 0, 0); - - tt.SetRealDate(2013, 8, 12); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1376265600, 2013, 8, 12, 0, 0, 0); - - tt.SetRealDate(2015, 12, 11, 10, 9, 8); - - AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), - tt, 1449828548, 2015, 12, 11, 10, 9, 8); - } - } -} + + AssertSimpleTM(PrintMarker("UTC:365*AddDay", __LINE__), + tt, 1352005567, 2012, 11, 4, 5, 6, 7); + + tt.Add(TSimpleTM::F_MON, -10); + AssertSimpleTM(PrintMarker("UTC:AddMonth(-10)", __LINE__), + tt, 1325653567, 2012, 1, 4, 5, 6, 7); + + tt.Add(TSimpleTM::F_HOUR, -24 * 4 - 6); + AssertSimpleTM(PrintMarker("UTC:AddHour(-102)", __LINE__), + tt, 1325286367, 2011, 12, 30, 23, 6, 7); + } + + { + TSimpleTM tt = TSimpleTM::New(); + + tt.SetRealDate(2012, 2, 29); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1330473600, 2012, 2, 29, 0, 0, 0); + + tt.SetRealDate(2012, 2, 29); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1330473600, 2012, 2, 29, 0, 0, 0); + + tt.SetRealDate(2013, 12, 28); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1388188800, 2013, 12, 28, 0, 0, 0); + + tt.SetRealDate(2012, 10, 23); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1350950400, 2012, 10, 23, 0, 0, 0); + + tt.SetRealDate(2013, 3, 16); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1363392000, 2013, 3, 16, 0, 0, 0); + + tt.SetRealDate(2013, 2, 17); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1361059200, 2013, 2, 17, 0, 0, 0); + + tt.SetRealDate(2012, 12, 23); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1356220800, 2012, 12, 23, 0, 0, 0); + + tt.SetRealDate(2012, 5, 17); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1337212800, 2012, 5, 17, 0, 0, 0); + + tt.SetRealDate(2012, 6, 15); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1339718400, 2012, 6, 15, 0, 0, 0); + + tt.SetRealDate(2009, 3, 17); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1237248000, 2009, 3, 17, 0, 0, 0); + + tt.SetRealDate(2013, 8, 12); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1376265600, 2013, 8, 12, 0, 0, 0); + + tt.SetRealDate(2015, 12, 11, 10, 9, 8); + + AssertSimpleTM(PrintMarker("UTC:SetRealDate", __LINE__), + tt, 1449828548, 2015, 12, 11, 10, 9, 8); + } + } +} |