mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-23 04:38:37 -05:00
More flexibility for QDateTime round/truncate routine
This commit is contained in:
parent
09dc647c12
commit
0ba5d7e1bf
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,6 +9,7 @@ jnq*
|
|||||||
*.mod
|
*.mod
|
||||||
*.pro.user
|
*.pro.user
|
||||||
*.txt
|
*.txt
|
||||||
|
!**/CMakeLists.txt
|
||||||
cmake-build-debug
|
cmake-build-debug
|
||||||
cmake-build-release
|
cmake-build-release
|
||||||
CMakeFiles
|
CMakeFiles
|
||||||
|
@ -926,7 +926,9 @@ endif ()
|
|||||||
if (WSJT_GENERATE_DOCS)
|
if (WSJT_GENERATE_DOCS)
|
||||||
add_subdirectory (doc)
|
add_subdirectory (doc)
|
||||||
endif (WSJT_GENERATE_DOCS)
|
endif (WSJT_GENERATE_DOCS)
|
||||||
|
if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests)
|
||||||
|
add_subdirectory (tests)
|
||||||
|
endif ()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Library building setup
|
# Library building setup
|
||||||
|
@ -37,14 +37,14 @@ void update_dynamic_property (QWidget * widget, char const * property, QVariant
|
|||||||
widget->update ();
|
widget->update ();
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime qt_round_date_time_to (QDateTime dt, int seconds)
|
QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds)
|
||||||
{
|
{
|
||||||
dt.setSecsSinceEpoch (dt.addSecs (seconds - 1).toSecsSinceEpoch () / seconds * seconds);
|
dt.setMSecsSinceEpoch (dt.addMSecs (milliseconds / 2).toMSecsSinceEpoch () / milliseconds * milliseconds);
|
||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds)
|
QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds)
|
||||||
{
|
{
|
||||||
dt.setSecsSinceEpoch (dt.toSecsSinceEpoch () / seconds * seconds);
|
dt.setMSecsSinceEpoch (dt.toMSecsSinceEpoch () / milliseconds * milliseconds);
|
||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
|
@ -69,11 +69,11 @@ QString font_as_stylesheet (QFont const&);
|
|||||||
// conditional style sheet updates
|
// conditional style sheet updates
|
||||||
void update_dynamic_property (QWidget *, char const * property, QVariant const& value);
|
void update_dynamic_property (QWidget *, char const * property, QVariant const& value);
|
||||||
|
|
||||||
// round a QDateTime instance to an interval
|
// round a QDateTime instance to an integral interval of milliseconds
|
||||||
QDateTime qt_round_date_time_to (QDateTime dt, int seconds);
|
QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds);
|
||||||
|
|
||||||
// truncate a QDateTime to an interval
|
// truncate a QDateTime to an integral interval of milliseconds
|
||||||
QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds);
|
QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds);
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
class VPtr
|
class VPtr
|
||||||
|
23
tests/CMakeLists.txt
Normal file
23
tests/CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
find_package (Qt5Test 5 REQUIRED)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler options
|
||||||
|
#
|
||||||
|
set (CMAKE_CXX_STANDARD 11)
|
||||||
|
add_compile_options ("$<$<COMPILE_LANGUAGE:Fortran>:-Wall;-Wno-conversion;-fno-second-underscore;-fno-f2c>")
|
||||||
|
add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:-fbounds-check>")
|
||||||
|
add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<NOT:$<CONFIG:Debug>>>:-funroll-all-loops>")
|
||||||
|
add_compile_options ("$<$<AND:$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>,$<OR:$<C_COMPILER_ID:GNU>,$<C_COMPILER_ID:Clang>,$<C_COMPILER_ID:AppleClang>>>:-Wall;-Wextra>")
|
||||||
|
add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:GNU>>:-Wno-pragmas>")
|
||||||
|
add_compile_options ("$<$<AND:$<OR:$<C_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:GNU>>,$<NOT:$<CONFIG:Debug>>>:-fdata-sections;-ffunction-sections>")
|
||||||
|
if (${OPENMP_FOUND} OR APPLE)
|
||||||
|
add_compile_options ("$<$<AND:$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>,$<C_COMPILER_ID:GNU>>:${OpenMP_C_FLAGS}>")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Tell CMake to run moc when necessary
|
||||||
|
set (CMAKE_AUTOMOC ON)
|
||||||
|
include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
add_executable (test_qt_helpers test_qt_helpers.cpp)
|
||||||
|
target_link_libraries (test_qt_helpers wsjt_qt Qt5::Test)
|
||||||
|
add_test (test_qt_helpers test_qt_helpers)
|
138
tests/test_qt_helpers.cpp
Normal file
138
tests/test_qt_helpers.cpp
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
#include <QtTest>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "qt_helpers.hpp"
|
||||||
|
|
||||||
|
class TestQtHelpers
|
||||||
|
: public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
private:
|
||||||
|
Q_SLOT void round_15s_date_time_up ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_15s_date_time_up ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_15s_date_time_down ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_15s_date_time_down ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_15s_date_time_on ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_15s_date_time_on ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_15s_date_time_under ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_15s_date_time_under ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_15s_date_time_over ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_15s_date_time_over ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_7p5s_date_time_up ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_7p5s_date_time_up ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_7p5s_date_time_down ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_7p5s_date_time_down ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_7p5s_date_time_on ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_7p5s_date_time_on ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_7p5s_date_time_under ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_7p5s_date_time_under ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void round_7p5s_date_time_over ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}};
|
||||||
|
QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_SLOT void truncate_7p5s_date_time_over ()
|
||||||
|
{
|
||||||
|
QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}};
|
||||||
|
QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500)));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
QTEST_MAIN (TestQtHelpers);
|
||||||
|
|
||||||
|
#include "test_qt_helpers.moc"
|
@ -8017,8 +8017,8 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout
|
|||||||
|
|
||||||
QString MainWindow::beacon_start_time (int n)
|
QString MainWindow::beacon_start_time (int n)
|
||||||
{
|
{
|
||||||
auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod);
|
auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod * 1.e3);
|
||||||
if (m_TRperiod < 60)
|
if (m_TRperiod < 60.)
|
||||||
{
|
{
|
||||||
return bt.toString ("HHmmss");
|
return bt.toString ("HHmmss");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user