Fix unit tests

This commit is contained in:
2023-03-08 14:34:19 +01:00
parent 2e07459336
commit 5d29369bd7
2 changed files with 53 additions and 81 deletions

View File

@ -24,7 +24,7 @@ private slots:
QTest::addColumn<std::string>("expected"); QTest::addColumn<std::string>("expected");
QTest::addRow("monday") << espchrono::DateTime{ QTest::addRow("monday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
@ -32,7 +32,7 @@ private slots:
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("tuesday") << espchrono::DateTime{ QTest::addRow("tuesday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
@ -40,7 +40,7 @@ private slots:
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("wednesday") << espchrono::DateTime{ QTest::addRow("wednesday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
@ -48,7 +48,7 @@ private slots:
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("thursday") << espchrono::DateTime{ QTest::addRow("thursday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
@ -56,31 +56,31 @@ private slots:
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("friday") << espchrono::DateTime{ QTest::addRow("friday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Friday .dayOfWeek=espchrono::DateTime::DayOfWeek::Friday
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("aturday") << espchrono::DateTime{ QTest::addRow("saturday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Saturday .dayOfWeek=espchrono::DateTime::DayOfWeek::Saturday
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("unday") << espchrono::DateTime{ QTest::addRow("sunday") << espchrono::DateTime{
10_d/October/2020, .date = 10_d/October/2020,
.hour=10, .hour=10,
.minute=20, .minute=20,
.second=30, .second=30,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Sunday .dayOfWeek=espchrono::DateTime::DayOfWeek::Sunday
} << "2020-10-10T10:20:30.000"s; } << "2020-10-10T10:20:30.000"s;
QTest::addRow("leading_zeros") << espchrono::DateTime{ QTest::addRow("leading_zeros") << espchrono::DateTime{
1_d/January/2020, .date = 1_d/January/2020,
.hour=1, .hour=1,
.minute=2, .minute=2,
.second=3, .second=3,
@ -101,29 +101,21 @@ private slots:
QTest::addColumn<espchrono::LocalDateTime>("dateTime"); QTest::addColumn<espchrono::LocalDateTime>("dateTime");
QTest::addColumn<std::string>("expected"); QTest::addColumn<std::string>("expected");
QTest::addRow("leading_zeros") << espchrono::LocalDateTime{ constexpr const auto makeLocalDateTime = [](auto date, auto hour, auto minute, auto second, auto dayOfWeek, auto timezone, auto dst){
espchrono::DateTime { espchrono::LocalDateTime localDateTime;
1_d/January/2020, localDateTime.date = date;
.hour = 1, localDateTime.hour = hour;
.minute = 2, localDateTime.minute = minute;
.second = 3, localDateTime.second = second;
.dayOfWeek = espchrono::DateTime::DayOfWeek::Monday, localDateTime.dayOfWeek = dayOfWeek;
}, localDateTime.timezone = timezone;
.timezone = testTimeZone, localDateTime.dst = dst;
.dst = false return localDateTime;
} << "2020-01-01T01:02:03.000 +01:00"s; };
QTest::addRow("leading_zeros_dst") << espchrono::LocalDateTime{ QTest::addRow("leading_zeros") << makeLocalDateTime(1_d/January/2020, 1, 2, 3, espchrono::DateTime::DayOfWeek::Monday, testTimeZone, false) << "2020-01-01T01:02:03.000 +01:00"s;
espchrono::DateTime {
1_d/January/2020, QTest::addRow("leading_zeros_dst") << makeLocalDateTime(1_d/January/2020, 1, 2, 3, espchrono::DateTime::DayOfWeek::Monday, testTimeZone, true) << "2020-01-01T01:02:03.000 +02:00"s;
.hour = 1,
.minute = 2,
.second = 3,
.dayOfWeek = espchrono::DateTime::DayOfWeek::Monday,
},
.timezone = testTimeZone,
.dst = true
} << "2020-01-01T01:02:03.000 +02:00"s;
} }
void test_dateTimeLocalToString() void test_dateTimeLocalToString()
@ -140,21 +132,21 @@ private slots:
QTest::addColumn<espchrono::DateTime>("expected"); QTest::addColumn<espchrono::DateTime>("expected");
QTest::addRow("random") << espchrono::utc_clock::time_point{123456s} << espchrono::DateTime{ QTest::addRow("random") << espchrono::utc_clock::time_point{123456s} << espchrono::DateTime{
2_d/January/1970, .date = 2_d/January/1970,
.hour=10, .minute=17, .second=36, .hour=10, .minute=17, .second=36,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Friday .dayOfWeek=espchrono::DateTime::DayOfWeek::Friday
}; };
QTest::addRow("leap_year") << espchrono::utc_clock::time_point{1582934400s} QTest::addRow("leap_year") << espchrono::utc_clock::time_point{1582934400s}
<< espchrono::DateTime{ << espchrono::DateTime{
29_d/February/2020, .date = 29_d/February/2020,
.hour=0, .minute=0, .second=0, .hour=0, .minute=0, .second=0,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Saturday .dayOfWeek=espchrono::DateTime::DayOfWeek::Saturday
}; };
QTest::addRow("normal_year") << espchrono::utc_clock::time_point{1614556800s} QTest::addRow("normal_year") << espchrono::utc_clock::time_point{1614556800s}
<< espchrono::DateTime{ << espchrono::DateTime{
1_d/March/2021, .date = 1_d/March/2021,
.hour=0, .minute=0, .second=0, .hour=0, .minute=0, .second=0,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Monday .dayOfWeek=espchrono::DateTime::DayOfWeek::Monday
}; };
@ -173,26 +165,22 @@ private slots:
QTest::addColumn<espchrono::local_clock::time_point>("time_point"); QTest::addColumn<espchrono::local_clock::time_point>("time_point");
QTest::addColumn<espchrono::LocalDateTime>("expected"); QTest::addColumn<espchrono::LocalDateTime>("expected");
constexpr const auto makeLocalDateTime = [](auto date, auto hour, auto minute, auto second, auto dayOfWeek, auto timezone, auto dst){
espchrono::LocalDateTime localDateTime;
localDateTime.date = date;
localDateTime.hour = hour;
localDateTime.minute = minute;
localDateTime.second = second;
localDateTime.dayOfWeek = dayOfWeek;
localDateTime.timezone = timezone;
localDateTime.dst = dst;
return localDateTime;
};
QTest::addRow("no_dst") << espchrono::local_clock::time_point(123456s, testTimeZone, false) QTest::addRow("no_dst") << espchrono::local_clock::time_point(123456s, testTimeZone, false)
<< espchrono::LocalDateTime{ << makeLocalDateTime(2_d/January/1970, 10, 17, 36, espchrono::DateTime::DayOfWeek::Friday, testTimeZone, false);
espchrono::DateTime{
2_d/January/1970,
.hour=10, .minute=17, .second=36,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Friday
},
.timezone = testTimeZone,
.dst = false
};
QTest::addRow("with_dst") << espchrono::local_clock::time_point(123456s, testTimeZone, true) QTest::addRow("with_dst") << espchrono::local_clock::time_point(123456s, testTimeZone, true)
<< espchrono::LocalDateTime{ << makeLocalDateTime(2_d/January/1970, 10, 17, 36, espchrono::DateTime::DayOfWeek::Friday, testTimeZone, true);
espchrono::DateTime{
2_d/January/1970,
.hour=10, .minute=17, .second=36,
.dayOfWeek=espchrono::DateTime::DayOfWeek::Friday
},
.timezone = testTimeZone,
.dst = true
};
} }
void test_toDateTimeLocal() void test_toDateTimeLocal()

View File

@ -3,7 +3,8 @@ TEMPLATE = app
QT += core testlib QT += core testlib
QT -= gui widgets QT -= gui widgets
CONFIG += c++17 qt console warn_on depend_includepath testcase CONFIG += c++23 qt console warn_on depend_includepath testcase
QMAKE_CXXFLAGS += -std=c++2b
CONFIG -= app_bundle CONFIG -= app_bundle
SOURCES += \ SOURCES += \
@ -53,23 +54,6 @@ equals(CLONE_DATE, 1) {
include($$DATE_DIR/date.pri) include($$DATE_DIR/date.pri)
equals(CLONE_EXPECTED, 1) {
EXPECTED_DIR = $$PWD/expected
message("Checking out expected...")
exists($$EXPECTED_DIR/.git): {
system("git -C $$EXPECTED_DIR pull")
} else {
system("git clone https://github.com/0xFEEDC0DE64/expected.git $$EXPECTED_DIR")
}
} else: exists($$PWD/../../expected/include) {
EXPECTED_DIR = $$PWD/../../expected
} else {
error("expected not found, please run git submodule update --init")
}
include($$EXPECTED_DIR/expected.pri)
equals(CLONE_FMT, 1) { equals(CLONE_FMT, 1) {
FMT_DIR = $$PWD/fmt FMT_DIR = $$PWD/fmt