KRFCDate minutes/seconds can be omitted (ISO8601)

ISO 8601 allows for dates and times to be represented with
"reduced precision".  In the case of times, this means the
minutes and seconds can be omitted.

More automated tests have been enabled, with the remaining
ones to be fixed up in a later PR.

Signed-off-by: mio <stigma@disroot.org>
(cherry picked from commit b56e68eac7)
pull/350/head
mio 4 months ago
parent 0418e523c6
commit 7d3bf3e611

@ -431,12 +431,16 @@ KRFCDate::parseDateISO8601( const TQString& input_ )
l = TQStringList::split(':', timeString); l = TQStringList::split(':', timeString);
if (l.size() < 3) // If the 'T' separator was included, there must at least
// be the hour, if not then it is invalid.
if (l.size() < 1)
return 0; return 0;
hour = l[0].toUInt(); hour = l[0].toUInt();
min = l[1].toUInt();
sec = l[2].toUInt(); // Minutes and seconds can be omitted.
min = (l.size() >= 2) ? l[1].toUInt() : 0;
sec = (l.size() >= 3) ? l[2].toUInt() : 0;
time_t result = ymdhms_to_seconds(year, month, mday, hour, min, sec); time_t result = ymdhms_to_seconds(year, month, mday, hour, min, sec);

@ -30,23 +30,41 @@ tde_add_library( tdeconfigtest SHARED AUTOMOC
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
) )
set( CHECKS set( AUTOMATED_CHECKS
tdeconfigtestgui klocaletest kprocesstest ksimpleconfigtest kstandarddirstest kcharsetstest kglobaltest kmacroexpandertest krfcdatetest
kuniqueapptest ktempfiletest krandomsequencetest kdebugtest kstringhandlertest kurltest tdestdacceltest
ksocktest kstringhandlertest kcmdlineargstest kapptest kmemtest
dcopkonqtest kipctest cplusplustest kiconloadertest kresolvertest # cplusplustest # -- skip (doesn't error on errors)
kmdcodectest knotifytest ksortablevaluelisttest krfcdatetest testqtargs # ksimpleconfigtest # -- skip (doesn't error on errors)
kprociotest kcharsetstest kcalendartest kmacroexpandertest kshelltest # ksortablevaluelist # -- skip (doesn't error on errors)
kxerrorhandlertest startserviceby kglobaltest ktimezonestest # ksocktest # -- skip due to DNS failure
) )
# Tests that require some graphical interaction / confirmation.
set( MANUAL_CHECKS_GUI
kdebugtest klocaletest knotifytest kxerrorhandlertest
startserviceby tdeconfigtestgui kprocesstest testqtargs
)
foreach( _check ${CHECKS} ) # Tests that require some interaction using a terminal
tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared ) set( MANUAL_CHECKS_TUI
dcopkonqtest kcalendartest kcmdlineargstest kiconloadertest
kipctest kmemtest krandomsequencetest kresolvertest
kmdcodectest kshelltest ktempfiletest ktimezonestest
kapptest kprociotest kstandarddirstest kuniqueapptest
)
foreach( _check ${AUTOMATED_CHECKS} )
tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared TEST )
endforeach( ) endforeach( )
tde_add_check_executable( kurltest AUTOMOC LINK tdeconfigtest-shared TEST ) foreach( _check ${MANUAL_CHECKS_GUI})
tde_add_check_executable( tdestdacceltest AUTOMOC LINK tdeconfigtest-shared TEST ) tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared )
endforeach()
foreach( _check ${MANUAL_CHECKS_TUI})
tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared )
endforeach()
tde_add_check_executable( kidlservertest AUTOMOC SOURCES KIDLTest.cpp KIDLTest.skel tde_add_check_executable( kidlservertest AUTOMOC SOURCES KIDLTest.cpp KIDLTest.skel
LINK tdeconfigtest-shared ) LINK tdeconfigtest-shared )

@ -59,6 +59,12 @@ int main(int argc, char *argv[])
a = KRFCDate::parseDateISO8601("1994-01-01"); a = KRFCDate::parseDateISO8601("1994-01-01");
check( "1994-01-01", a, b ); check( "1994-01-01", a, b );
a = KRFCDate::parseDateISO8601("1994-01-01T12");
check("1994-01-01T12", a, b);
a = KRFCDate::parseDateISO8601("1994-01-01T12:00");
check("1994-01-01T12:00", a, b);
b = 0; b = 0;
// pass RFC date to ISO parser // pass RFC date to ISO parser

Loading…
Cancel
Save