From df47fdb8563452a1e68d4ec6d7c6eb36e7a9d353 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Tue, 11 Jul 2017 01:44:33 -0700 Subject: Pick the default style name at runtime instead of compile time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of a naïve OS-based compile time check, we check which platform plugin is in use at runtime. This should give a more accurate mapping, especially on desktop OSes using alternative platform plugins where the Desktop style is not useful. The minimum Android SDK version is 16 now, so the check is removed. Change-Id: Ie7af3a8ce5fd031256f5eba9706f24ab50a23bf9 Reviewed-by: Gabriel de Dietrich --- src/controls/Private/qquickcontrolsettings.cpp | 36 +++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/controls/Private/qquickcontrolsettings.cpp b/src/controls/Private/qquickcontrolsettings.cpp index d8cfdaed..95c656b2 100644 --- a/src/controls/Private/qquickcontrolsettings.cpp +++ b/src/controls/Private/qquickcontrolsettings.cpp @@ -58,19 +58,31 @@ QT_BEGIN_NAMESPACE static QString defaultStyleName() { - //Only enable QStyle support when we are using QApplication -#if defined(QT_WIDGETS_LIB) && !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY) && !defined(Q_OS_QNX) && !defined(Q_OS_WINRT) - if (QCoreApplication::instance()->inherits("QApplication")) - return QLatin1String("Desktop"); -#elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) - if (QtAndroidPrivate::androidSdkVersion() >= 11) - return QLatin1String("Android"); -#elif defined(Q_OS_IOS) - return QLatin1String("iOS"); -#elif defined(Q_OS_WINRT) && 0 // Enable once style is ready - return QLatin1String("WinRT"); + static const QMap styleMap { +#if defined(QT_WIDGETS_LIB) + {QLatin1String("cocoa"), QLatin1String("Desktop")}, + {QLatin1String("wayland"), QLatin1String("Desktop")}, + {QLatin1String("windows"), QLatin1String("Desktop")}, + {QLatin1String("xcb"), QLatin1String("Desktop")}, #endif - return QLatin1String("Base"); + {QLatin1String("android"), QLatin1String("Android")}, + {QLatin1String("ios"), QLatin1String("iOS")}, +#if 0 // Enable once style is ready + {QLatin1String("winrt"), QLatin1String("WinRT")}, +#endif + }; + + QGuiApplication *app = static_cast( + QCoreApplication::instance()); + const QString styleName = styleMap.value(app->platformName(), QLatin1String("Base")); + +#if defined(QT_WIDGETS_LIB) + // Only enable QStyle support when we are using QApplication + if (styleName == QLatin1String("Desktop") && !app->inherits("QApplication")) + return QLatin1String("Base"); +#endif + + return styleName; } static QString styleEnvironmentVariable() -- cgit v1.2.1 From 73d374b1aa8f59c624592880d2edbcf30c132fb5 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Sat, 18 Nov 2017 21:48:08 +0200 Subject: ScrollView: fix cyclic Tab navigation The ScrollView is not a control widget, which should be included in the focus chain when the user presses the Tab key; instead, it's a container and as such it should not interfere with the navigation. We also modify TableView, because it derives from ScrollView but we want to keep its current behavior. Task-number: QTBUG-64596 Change-Id: Ibd7833603d38171693b2f34c5859e9c4615b8ed4 Reviewed-by: Liang Qi --- src/controls/Private/BasicTableView.qml | 2 + src/controls/ScrollView.qml | 2 +- tests/auto/controls/data/tst_scrollview.qml | 84 +++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/src/controls/Private/BasicTableView.qml b/src/controls/Private/BasicTableView.qml index 66ad0d36..2557dca7 100644 --- a/src/controls/Private/BasicTableView.qml +++ b/src/controls/Private/BasicTableView.qml @@ -348,6 +348,8 @@ ScrollView { } } + activeFocusOnTab: true + implicitWidth: 200 implicitHeight: 150 diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml index 3a7b031f..65ed54d7 100644 --- a/src/controls/ScrollView.qml +++ b/src/controls/ScrollView.qml @@ -191,7 +191,7 @@ FocusScope { /*! \internal */ property Style __style: styleLoader.item - activeFocusOnTab: true + activeFocusOnTab: false onContentItemChanged: { diff --git a/tests/auto/controls/data/tst_scrollview.qml b/tests/auto/controls/data/tst_scrollview.qml index 842fd6dc..42398115 100644 --- a/tests/auto/controls/data/tst_scrollview.qml +++ b/tests/auto/controls/data/tst_scrollview.qml @@ -139,6 +139,45 @@ TestCase { } } + Component { + id: tabNavigationComponent + ApplicationWindow { + property alias scrollView: view + property alias control1: text1 + property alias control2: text2 + property alias control3: button + + width: 400 + height: 300 + visible: true + modality: Qt.WindowModal + + ScrollView { + id: view + anchors { top: parent.top; left: parent.left; right: parent.right; bottom: button.top } + Column { + width: view.width + TextField { + id: text1 + anchors { left: parent.left; right: parent.right } + height: 30 + } + TextField { + id: text2 + anchors { left: parent.left; right: parent.right } + height: 30 + } + } + } + + Button { + id: button + anchors.bottom: parent.bottom + text: "hi" + } + } + } + function test_dragFetchAppend() { // QTBUG-50795 var scrollView = dragFetchAppendComponent.createObject(container) verify(scrollView !== null, "view created is null") @@ -319,5 +358,50 @@ TestCase { verify(!control.control3.activeFocus) control.destroy() } + + function test_navigation_QTBUG_64596() { + if (Qt.styleHints.tabFocusBehavior != Qt.TabFocusAllControls) + skip("This function doesn't support NOT iterating all.") + + var control = tabNavigationComponent.createObject(container) + verify(control) + waitForRendering(control.contentItem) + + control.requestActivate() + control.control1.forceActiveFocus() + verify(control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(!control.control3.activeFocus) + keyPress(Qt.Key_Tab) + verify(!control.control1.activeFocus) + verify(control.control2.activeFocus) + verify(!control.control3.activeFocus) + keyPress(Qt.Key_Tab) + verify(!control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(control.control3.activeFocus) + keyPress(Qt.Key_Tab) + verify(control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(!control.control3.activeFocus) + // and backwards + keyPress(Qt.Key_Tab, Qt.ShiftModifier) + verify(!control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(control.control3.activeFocus) + keyPress(Qt.Key_Tab, Qt.ShiftModifier) + verify(!control.control1.activeFocus) + verify(control.control2.activeFocus) + verify(!control.control3.activeFocus) + keyPress(Qt.Key_Tab, Qt.ShiftModifier) + verify(control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(!control.control3.activeFocus) + keyPress(Qt.Key_Tab, Qt.ShiftModifier) + verify(!control.control1.activeFocus) + verify(!control.control2.activeFocus) + verify(control.control3.activeFocus) + control.destroy() + } } } -- cgit v1.2.1 From 00bfab6671fda57cc34aa84335a6c47ffb0df98e Mon Sep 17 00:00:00 2001 From: Joni Poikelin Date: Thu, 26 Oct 2017 11:51:30 +0300 Subject: Fix ScrollView scrollbar handles when there is no content Task-number: QTBUG-64052 Change-Id: I047255d90ee5f807d2b7b5567aa6559fa8c08499 Reviewed-by: Gabriel de Dietrich --- src/controls/Styles/Base/ScrollViewStyle.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controls/Styles/Base/ScrollViewStyle.qml b/src/controls/Styles/Base/ScrollViewStyle.qml index 3df278c6..26285c85 100644 --- a/src/controls/Styles/Base/ScrollViewStyle.qml +++ b/src/controls/Styles/Base/ScrollViewStyle.qml @@ -370,8 +370,8 @@ Style { property var flickableItem: control.flickableItem property int extent: Math.max(minimumHandleLength, __styleData.horizontal ? - Math.min(1, (flickableItem ? flickableItem.width/flickableItem.contentWidth : 0)) * bg.width : - Math.min(1, (flickableItem ? flickableItem.height/flickableItem.contentHeight : 0)) * bg.height) + Math.min(1, (flickableItem ? flickableItem.width/flickableItem.contentWidth : 1)) * bg.width : + Math.min(1, (flickableItem ? flickableItem.height/flickableItem.contentHeight : 1)) * bg.height) readonly property real range: __control.maximumValue - __control.minimumValue readonly property real begin: __control.value - __control.minimumValue -- cgit v1.2.1 From 37592ad9c6df35bdd37609569963fe7361cdad85 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 12 Dec 2017 09:54:54 +0100 Subject: Bump version Change-Id: I61f110cfa07ed4b809357e9d340893c63f634d31 --- .qmake.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.qmake.conf b/.qmake.conf index db2299f2..5e72674d 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) CONFIG += warning_clean android|ios|qnx|winrt|isEmpty(QT.widgets.name): CONFIG += no_desktop -MODULE_VERSION = 5.9.3 +MODULE_VERSION = 5.9.4 -- cgit v1.2.1 From 15c909f4170450cdbe01218a0d7cbea55b70fae5 Mon Sep 17 00:00:00 2001 From: Oleg Yadrov Date: Mon, 11 Dec 2017 16:25:45 -0200 Subject: Calendar: fix bug when NaN is displayed instead of date I fixed a similar issue last year on the JavaScript side: 094ad30c94a72784449f43ef06d2172d644ab0fd At this time the same thing has been happening in C++. See QTBUG-54559 and the patch for a detailed explanation of the issue. In short, the problem with Calendar is that internally it uses QDate which does not keep information about time, whereas in the JavaScript world date is always combined with time. So, QDate(2017-10-15) is valid, but when during QDate -> JS Date transformation we add time to it (which defaults to midnight (00:00)), it becomes invalid in time zones where the Daylight Saving Time -> Standard Time transition takes place at midnight. To avoid switching the entire QQuickCalendarModel1 to using QDateTime, I modified its date(...) and dateAt(...) methods to return QDateTime with the time part always set to 12:00. That transformation required more changes in QQuickRangedDate1, because Calendar::selectedDate internally is QQuickRangedDate1::selectedDate, and I also had to fix "selected" property binding in the Base Calendar Style as it did take into account the time part of the date, which resulted in wrong behavior with my changes. Task-number: QTBUG-64068 Change-Id: Ia2f7703ff4e5811ef79438c97739da1d8001a7f5 Reviewed-by: Mitch Curtis Reviewed-by: J-P Nurmi --- src/controls/Private/qquickcalendarmodel.cpp | 8 ++++---- src/controls/Private/qquickcalendarmodel_p.h | 2 +- src/controls/Private/qquickrangeddate.cpp | 12 ++++++------ src/controls/Private/qquickrangeddate_p.h | 24 +++++++++++------------ src/controls/Styles/Base/CalendarStyle.qml | 4 +++- tests/auto/controls/data/tst_calendar.qml | 29 +++++++++++++++++++++------- tests/auto/controls/data/tst_rangeddate.qml | 5 ++++- 7 files changed, 52 insertions(+), 32 deletions(-) diff --git a/src/controls/Private/qquickcalendarmodel.cpp b/src/controls/Private/qquickcalendarmodel.cpp index 64d52f95..b2284c25 100644 --- a/src/controls/Private/qquickcalendarmodel.cpp +++ b/src/controls/Private/qquickcalendarmodel.cpp @@ -162,7 +162,7 @@ void QQuickCalendarModel1::setLocale(const QLocale &locale) QVariant QQuickCalendarModel1::data(const QModelIndex &index, int role) const { if (role == DateRole) - return mVisibleDates.at(index.row()); + return QDateTime(mVisibleDates.at(index.row()), QTime(12, 0)); return QVariant(); } @@ -181,9 +181,9 @@ QHash QQuickCalendarModel1::roleNames() const /*! Returns the date at \a index, or an invalid date if \a index is invalid. */ -QDate QQuickCalendarModel1::dateAt(int index) const +QDateTime QQuickCalendarModel1::dateAt(int index) const { - return index >= 0 && index < mVisibleDates.size() ? mVisibleDates.at(index) : QDate(); + return index >= 0 && index < mVisibleDates.size() ? QDateTime(mVisibleDates.at(index), QTime(12, 0)) : QDateTime(); } /*! @@ -207,7 +207,7 @@ int QQuickCalendarModel1::indexAt(const QDate &date) int QQuickCalendarModel1::weekNumberAt(int row) const { const int index = row * daysInAWeek; - const QDate date = dateAt(index); + const QDate date = dateAt(index).date(); if (date.isValid()) return date.weekNumber(); return -1; diff --git a/src/controls/Private/qquickcalendarmodel_p.h b/src/controls/Private/qquickcalendarmodel_p.h index cb47c576..99ae9423 100644 --- a/src/controls/Private/qquickcalendarmodel_p.h +++ b/src/controls/Private/qquickcalendarmodel_p.h @@ -75,7 +75,7 @@ public: QHash roleNames() const Q_DECL_OVERRIDE; - Q_INVOKABLE QDate dateAt(int index) const; + Q_INVOKABLE QDateTime dateAt(int index) const; Q_INVOKABLE int indexAt(const QDate &visibleDate); Q_INVOKABLE int weekNumberAt(int row) const; diff --git a/src/controls/Private/qquickrangeddate.cpp b/src/controls/Private/qquickrangeddate.cpp index 231a798a..df7958ac 100644 --- a/src/controls/Private/qquickrangeddate.cpp +++ b/src/controls/Private/qquickrangeddate.cpp @@ -42,12 +42,12 @@ QT_BEGIN_NAMESPACE // JavaScript Date > QDate conversion is not correct for large negative dates. -Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMinimumDate, (QDate(1, 1, 1))) -Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMaximumDate, (QDate(275759, 10, 25))) +Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMinimumDate, (QDateTime(QDate(1, 1, 1), QTime()))) +Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMaximumDate, (QDateTime(QDate(275759, 10, 25), QTime()))) QQuickRangedDate1::QQuickRangedDate1() : QObject(0), - mDate(QDate::currentDate()), + mDate(QDateTime::currentDateTime()), mMinimumDate(*jsMinimumDate), mMaximumDate(*jsMaximumDate) { @@ -56,7 +56,7 @@ QQuickRangedDate1::QQuickRangedDate1() : /*! \internal \qmlproperty date QQuickRangedDate::date */ -void QQuickRangedDate1::setDate(const QDate &date) +void QQuickRangedDate1::setDate(const QDateTime &date) { if (date == mDate) return; @@ -75,7 +75,7 @@ void QQuickRangedDate1::setDate(const QDate &date) /*! \internal \qmlproperty date QQuickRangedDate::minimumDate */ -void QQuickRangedDate1::setMinimumDate(const QDate &minimumDate) +void QQuickRangedDate1::setMinimumDate(const QDateTime &minimumDate) { if (minimumDate == mMinimumDate) return; @@ -93,7 +93,7 @@ void QQuickRangedDate1::setMinimumDate(const QDate &minimumDate) /*! \internal \qmlproperty date QQuickRangedDate::maximumDate */ -void QQuickRangedDate1::setMaximumDate(const QDate &maximumDate) +void QQuickRangedDate1::setMaximumDate(const QDateTime &maximumDate) { if (maximumDate == mMaximumDate) return; diff --git a/src/controls/Private/qquickrangeddate_p.h b/src/controls/Private/qquickrangeddate_p.h index 6ac7bc12..836daa4c 100644 --- a/src/controls/Private/qquickrangeddate_p.h +++ b/src/controls/Private/qquickrangeddate_p.h @@ -49,23 +49,23 @@ QT_BEGIN_NAMESPACE class QQuickRangedDate1 : public QObject { Q_OBJECT - Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged RESET resetDate) - Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate NOTIFY minimumDateChanged RESET resetMinimumDate) - Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate NOTIFY maximumDateChanged RESET resetMaximumDate) + Q_PROPERTY(QDateTime date READ date WRITE setDate NOTIFY dateChanged RESET resetDate) + Q_PROPERTY(QDateTime minimumDate READ minimumDate WRITE setMinimumDate NOTIFY minimumDateChanged RESET resetMinimumDate) + Q_PROPERTY(QDateTime maximumDate READ maximumDate WRITE setMaximumDate NOTIFY maximumDateChanged RESET resetMaximumDate) public: QQuickRangedDate1(); ~QQuickRangedDate1() {} - QDate date() const { return mDate; } - void setDate(const QDate &date); + QDateTime date() const { return mDate; } + void setDate(const QDateTime &date); void resetDate() {} - QDate minimumDate() const { return mMinimumDate; } - void setMinimumDate(const QDate &minimumDate); + QDateTime minimumDate() const { return mMinimumDate; } + void setMinimumDate(const QDateTime &minimumDate); void resetMinimumDate() {} - QDate maximumDate() const { return mMaximumDate; } - void setMaximumDate(const QDate &maximumDate); + QDateTime maximumDate() const { return mMaximumDate; } + void setMaximumDate(const QDateTime &maximumDate); void resetMaximumDate() {} Q_SIGNALS: @@ -74,9 +74,9 @@ Q_SIGNALS: void maximumDateChanged(); private: - QDate mDate; - QDate mMinimumDate; - QDate mMaximumDate; + QDateTime mDate; + QDateTime mMinimumDate; + QDateTime mMaximumDate; }; QT_END_NAMESPACE diff --git a/src/controls/Styles/Base/CalendarStyle.qml b/src/controls/Styles/Base/CalendarStyle.qml index 862c5f43..5999dcac 100644 --- a/src/controls/Styles/Base/CalendarStyle.qml +++ b/src/controls/Styles/Base/CalendarStyle.qml @@ -671,7 +671,9 @@ Style { property QtObject styleData: QtObject { readonly property alias index: delegateLoader.__index - readonly property bool selected: control.selectedDate.getTime() === date.getTime() + readonly property bool selected: control.selectedDate.getFullYear() === date.getFullYear() && + control.selectedDate.getMonth() === date.getMonth() && + control.selectedDate.getDate() === date.getDate() readonly property alias date: delegateLoader.__date readonly property bool valid: delegateLoader.valid // TODO: this will not be correct if the app is running when a new day begins. diff --git a/tests/auto/controls/data/tst_calendar.qml b/tests/auto/controls/data/tst_calendar.qml index 1185aca9..d47f62ba 100644 --- a/tests/auto/controls/data/tst_calendar.qml +++ b/tests/auto/controls/data/tst_calendar.qml @@ -129,7 +129,10 @@ Item { compare(calendar.minimumDate, new Date(1, 0, 1)); compare(calendar.maximumDate, new Date(4000, 0, 1)); - compare(calendar.selectedDate, new Date(new Date().setHours(0, 0, 0, 0))); + var expectedDate = new Date(); + compare(calendar.selectedDate.getFullYear(), expectedDate.getFullYear()); + compare(calendar.selectedDate.getMonth(), expectedDate.getMonth()); + compare(calendar.selectedDate.getDate(), expectedDate.getDate()); compare(calendar.frameVisible, true); compare(calendar.dayOfWeekFormat, Locale.ShortFormat); compare(calendar.__locale, Qt.locale()); @@ -406,7 +409,9 @@ Item { expectedDate.setDate(expectedDate.getDate() + cellIndex); mousePress(calendar, toPixelsX(day), toPixelsY(week), Qt.LeftButton); - compare(calendar.selectedDate, expectedDate); + compare(calendar.selectedDate.getFullYear(), expectedDate.getFullYear()); + compare(calendar.selectedDate.getMonth(), expectedDate.getMonth()); + compare(calendar.selectedDate.getDate(), expectedDate.getDate()); compare(calendar.__panel.pressedCellIndex, cellIndex); compare(pressedSignalSpy.count, 1); compare(releasedSignalSpy.count, 0); @@ -434,7 +439,9 @@ Item { // Ensure released event does not trigger date selection. calendar.selectedDate = startDate; mousePress(calendar, toPixelsX(1), toPixelsY(0), Qt.LeftButton); - compare(calendar.selectedDate, new Date(2012, 11, 31)); + compare(calendar.selectedDate.getFullYear(), 2012); + compare(calendar.selectedDate.getMonth(), 11); + compare(calendar.selectedDate.getDate(), 31); compare(calendar.__panel.pressedCellIndex, 1); compare(pressedSignalSpy.count, 1); compare(releasedSignalSpy.count, 0); @@ -445,7 +452,9 @@ Item { clickedSignalSpy.clear(); mouseRelease(calendar, toPixelsX(1), toPixelsY(0), Qt.LeftButton); - compare(calendar.selectedDate, new Date(2012, 11, 31)); + compare(calendar.selectedDate.getFullYear(), 2012); + compare(calendar.selectedDate.getMonth(), 11); + compare(calendar.selectedDate.getDate(), 31); compare(calendar.__panel.pressedCellIndex, -1); compare(pressedSignalSpy.count, 0); compare(releasedSignalSpy.count, 1); @@ -534,7 +543,9 @@ Item { calendar.__locale = Qt.locale("en_GB"); calendar.selectedDate = new Date(2014, 11, 1); mousePress(calendar, toPixelsX(0), toPixelsY(0), Qt.LeftButton); - compare(calendar.selectedDate, new Date(2014, 10, 24)); + compare(calendar.selectedDate.getFullYear(), 2014); + compare(calendar.selectedDate.getMonth(), 10); + compare(calendar.selectedDate.getDate(), 24); mouseRelease(calendar, toPixelsX(0), toPixelsY(0), Qt.LeftButton); } @@ -585,7 +596,9 @@ Item { function dragTo(cellX, cellY, expectedCellIndex, expectedDate) { mouseMove(calendar, toPixelsX(cellX), toPixelsY(cellY)); - compare(calendar.selectedDate, expectedDate); + compare(calendar.selectedDate.getFullYear(), expectedDate.getFullYear()); + compare(calendar.selectedDate.getMonth(), expectedDate.getMonth()); + compare(calendar.selectedDate.getDate(), expectedDate.getDate()); compare(calendar.__panel.pressedCellIndex, expectedCellIndex); compare(hoveredSignalSpy.count, 1); compare(pressedSignalSpy.count, 1); @@ -627,7 +640,9 @@ Item { 3 4 5 6 7 8 9 3 4 5 6 7 8 9 */ mousePress(calendar, toPixelsX(5), toPixelsY(0), Qt.LeftButton); - compare(calendar.selectedDate, new Date(2014, 1, 1)); + compare(calendar.selectedDate.getFullYear(), 2014); + compare(calendar.selectedDate.getMonth(), 1); + compare(calendar.selectedDate.getDate(), 1); compare(calendar.__panel.pressedCellIndex, 5); compare(pressedSignalSpy.count, 1); compare(releasedSignalSpy.count, 0); diff --git a/tests/auto/controls/data/tst_rangeddate.qml b/tests/auto/controls/data/tst_rangeddate.qml index cad94eb4..a1874441 100644 --- a/tests/auto/controls/data/tst_rangeddate.qml +++ b/tests/auto/controls/data/tst_rangeddate.qml @@ -69,7 +69,10 @@ Item { function test_defaultConstruction() { // rangedDate.date should be the current date. - compare(rangedDate.date.getTime(), new Date(Date.now()).setHours(0, 0, 0, 0)); + var expectedDate = new Date(); + compare(rangedDate.date.getFullYear(), expectedDate.getFullYear()); + compare(rangedDate.date.getMonth(), expectedDate.getMonth()); + compare(rangedDate.date.getDate(), expectedDate.getDate()); } function test_minMax() { -- cgit v1.2.1