diff options
author | Andy Shaw <andy.shaw@qt.io> | 2018-12-05 12:12:03 +0100 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2019-01-14 07:30:35 +0000 |
commit | b1b68aa279275e93b867c29fa42350f42b9d9728 (patch) | |
tree | c659c0ebb560d015f497ecce54cda8bf3c39fe4f /tests/auto | |
parent | 08b418078217b1c7c8756358810773f492a0df35 (diff) | |
download | qtquickcontrols-b1b68aa279275e93b867c29fa42350f42b9d9728.tar.gz |
Calendar: Ignore any time specified for a minimum and maximum date
Since Calendar only cares about the date part and not the time, we
should ignore the time part when it is set as the minimum and maximum
and manually set it to 0:00:00 and 23:59:59 respectively. This ensures
that the day itself is still seen as valid irrespective of what time
was passed to Date().
Change-Id: I57c311ffe7d3fb1ab69c59296a067a66f1007137
Fixes: QTBUG-71997
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/controls/data/tst_calendar.qml | 24 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_rangeddate.qml | 64 |
2 files changed, 50 insertions, 38 deletions
diff --git a/tests/auto/controls/data/tst_calendar.qml b/tests/auto/controls/data/tst_calendar.qml index 17b2b9b4..1f8d9a8d 100644 --- a/tests/auto/controls/data/tst_calendar.qml +++ b/tests/auto/controls/data/tst_calendar.qml @@ -124,11 +124,19 @@ Item { } function test_defaultConstructed() { - calendar.minimumDate = new Date(1, 0, 1); - calendar.maximumDate = new Date(4000, 0, 1); - - compare(calendar.minimumDate, new Date(1, 0, 1)); - compare(calendar.maximumDate, new Date(4000, 0, 1)); + // Minimum date needs to be at least 1921-05-01 due to date problems in < JS7 which + // causes problems with the Finnish timezone in CI. So use 1922 to avoid those + // causing an invalid failure + + // The minimum and maximum are set with "different" times + // to confirm that they have no bearing from what it will + // return later on as we only care about the date part + // and not the specific time in the range. + calendar.minimumDate = new Date(22, 0, 1, 23, 59, 59, 999); + calendar.maximumDate = new Date(4000, 0, 1, 0, 0, 0, 0); + + compare(calendar.minimumDate, new Date(22, 0, 1)); + compare(calendar.maximumDate, new Date(4000, 0, 1, 23, 59, 59, 999)); var expectedDate = new Date(); compare(calendar.selectedDate.getFullYear(), expectedDate.getFullYear()); compare(calendar.selectedDate.getMonth(), expectedDate.getMonth()); @@ -139,15 +147,15 @@ Item { } function test_setAfterConstructed() { - calendar.minimumDate = new Date(1900, 0, 1); + calendar.minimumDate = new Date(1922, 0, 1); calendar.maximumDate = new Date(1999, 11, 31); calendar.selectedDate = new Date(1980, 0, 1); calendar.frameVisible = false; calendar.dayOfWeekFormat = Locale.NarrowFormat; calendar.locale = Qt.locale("de_DE"); - compare(calendar.minimumDate, new Date(1900, 0, 1)); - compare(calendar.maximumDate, new Date(1999, 11, 31)); + compare(calendar.minimumDate, new Date(1922, 0, 1)); + compare(calendar.maximumDate, new Date(1999, 11, 31, 23, 59, 59, 999)); compare(calendar.selectedDate, new Date(1980, 0, 1)); compare(calendar.frameVisible, false); compare(calendar.locale, Qt.locale("de_DE")); diff --git a/tests/auto/controls/data/tst_rangeddate.qml b/tests/auto/controls/data/tst_rangeddate.qml index a1874441..a7d48d85 100644 --- a/tests/auto/controls/data/tst_rangeddate.qml +++ b/tests/auto/controls/data/tst_rangeddate.qml @@ -86,45 +86,49 @@ Item { } function test_constructionPropertyOrder() { + // Minimum date needs to be at least 1921-05-01 due to date problems in < JS7 which + // causes problems with the Finnish timezone in CI. So use 1922 to avoid those + // causing an invalid failure + // All values are valid; fine. rangedDate = Qt.createQmlObject(importsStr + " RangedDate { " - + "date: new Date(1900, 0, 2); " - + "minimumDate: new Date(1900, 0, 1); " - + "maximumDate: new Date(1900, 0, 3); " + + "date: new Date(1922, 0, 2); " + + "minimumDate: new Date(1922, 0, 1); " + + "maximumDate: new Date(1922, 0, 3); " + " }", container, ""); - compare(rangedDate.date.getTime(), new Date(1900, 0, 2).getTime()); - compare(rangedDate.minimumDate.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.maximumDate.getTime(), new Date(1900, 0, 3).getTime()); + compare(rangedDate.date.getTime(), new Date(1922, 0, 2).getTime()); + compare(rangedDate.minimumDate.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1922, 0, 3, 23, 59, 59, 999).getTime()); // All values are the same; doesn't make sense, but is fine [1]. rangedDate = Qt.createQmlObject(importsStr + " RangedDate { " - + "date: new Date(1900, 0, 1);" - + "minimumDate: new Date(1900, 0, 1);" - + "maximumDate: new Date(1900, 0, 1);" + + "date: new Date(1922, 0, 1);" + + "minimumDate: new Date(1922, 0, 1);" + + "maximumDate: new Date(1922, 0, 1);" + " }", container, ""); - compare(rangedDate.date.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.minimumDate.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.maximumDate.getTime(), new Date(1900, 0, 1).getTime()); + compare(rangedDate.date.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.minimumDate.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1922, 0, 1, 23, 59, 59, 999).getTime()); // date is lower than min - should be clamped to min. rangedDate = Qt.createQmlObject(importsStr + " RangedDate { " + "date: new Date(1899, 0, 1);" - + "minimumDate: new Date(1900, 0, 1);" - + "maximumDate: new Date(1900, 0, 1);" + + "minimumDate: new Date(1922, 0, 1);" + + "maximumDate: new Date(1922, 0, 1);" + " }", container, ""); - compare(rangedDate.date.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.minimumDate.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.maximumDate.getTime(), new Date(1900, 0, 1).getTime()); + compare(rangedDate.date.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.minimumDate.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1922, 0, 1, 23, 59, 59, 999).getTime()); // date is higher than max - should be clamped to max. rangedDate = Qt.createQmlObject(importsStr + " RangedDate { " - + "date: new Date(1900, 0, 2);" - + "minimumDate: new Date(1900, 0, 1);" - + "maximumDate: new Date(1900, 0, 1);" + + "date: new Date(1922, 0, 2);" + + "minimumDate: new Date(1922, 0, 1);" + + "maximumDate: new Date(1922, 0, 1);" + " }", container, ""); - compare(rangedDate.date.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.minimumDate.getTime(), new Date(1900, 0, 1).getTime()); - compare(rangedDate.maximumDate.getTime(), new Date(1900, 0, 1).getTime()); + compare(rangedDate.date.getTime(), new Date(1922, 0, 1, 23, 59, 59, 999).getTime()); + compare(rangedDate.minimumDate.getTime(), new Date(1922, 0, 1).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1922, 0, 1, 23, 59, 59, 999).getTime()); // If the order of property construction is undefined (as it should be if it's declarative), // then is min considered higher than max or max lower than min? Which should be changed? @@ -132,13 +136,13 @@ Item { // For now, max will always be the one that's changed. It will be set to min, // as min may already be the largest possible date (See [1]). rangedDate = Qt.createQmlObject(importsStr + " RangedDate { " - + "date: new Date(1900, 0, 1);" - + "minimumDate: new Date(1900, 0, 2);" - + "maximumDate: new Date(1900, 0, 1);" + + "date: new Date(1922, 0, 1);" + + "minimumDate: new Date(1922, 0, 2);" + + "maximumDate: new Date(1922, 0, 1);" + " }", container, ""); - compare(rangedDate.date.getTime(), new Date(1900, 0, 2).getTime()); - compare(rangedDate.minimumDate.getTime(), new Date(1900, 0, 2).getTime()); - compare(rangedDate.maximumDate.getTime(), new Date(1900, 0, 2).getTime()); + compare(rangedDate.date.getTime(), new Date(1922, 0, 2).getTime()); + compare(rangedDate.minimumDate.getTime(), new Date(1922, 0, 2).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1922, 0, 2, 23, 59, 59, 999).getTime()); // [1] Do we want to enforce min and max being different? E.g. if min // is (1900, 0, 1) and max is (1900, 0, 1), max should be set (1900, 0, 2). @@ -159,7 +163,7 @@ Item { rangedDate.minimumDate = new Date(1990, 0, 1); compare(rangedDate.minimumDate.getTime(), new Date(1990, 0, 1).getTime()); rangedDate.maximumDate = new Date(1999, 0, 1); - compare(rangedDate.maximumDate.getTime(), new Date(1999, 0, 1).getTime()); + compare(rangedDate.maximumDate.getTime(), new Date(1999, 0, 1, 23, 59, 59, 999).getTime()); // MIN DATE MAX // [ 1996 | 1996 | 1999 ] |