Clarify handling of unspecified year in two QCalendar methods
[ChangeLog][QtCore] QCalendar::monthsInYear(QCalendar::Unspecified) now returns maximumMonthsInYear(). QCalendar::daysInYear() now makes clear that its handling of unspecified year is undefined. Change-Id: Ifef8723193868c666f6afeb7f190af4929d30dea Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
a5be18cc7d
commit
b4b3b5c694
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2019 The Qt Company Ltd.
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
@ -750,6 +750,8 @@ int QCalendar::daysInMonth(int month, int year) const
|
||||
|
||||
/*!
|
||||
Returns the number of days in the given \a year.
|
||||
|
||||
Handling of \c Unspecified as \a year is undefined.
|
||||
*/
|
||||
int QCalendar::daysInYear(int year) const
|
||||
{
|
||||
@ -758,10 +760,15 @@ int QCalendar::daysInYear(int year) const
|
||||
|
||||
/*!
|
||||
Returns the number of months in the given \a year.
|
||||
|
||||
If \a year is \c Unspecified, returns the maximum number of months in a
|
||||
year.
|
||||
|
||||
\sa maximumMonthsInYear()
|
||||
*/
|
||||
int QCalendar::monthsInYear(int year) const
|
||||
{
|
||||
return d ? d->monthsInYear(year) : 0;
|
||||
return d ? year == Unspecified ? d->maximumMonthsInYear() : d->monthsInYear(year) : 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
@ -40,6 +40,8 @@ private:
|
||||
private slots:
|
||||
void basic_data();
|
||||
void basic();
|
||||
void unspecified_data() { basic_data(); }
|
||||
void unspecified();
|
||||
void nameCase();
|
||||
void specific_data();
|
||||
void specific();
|
||||
@ -145,6 +147,27 @@ void tst_QCalendar::basic()
|
||||
NORMALYEAR(cal, year);
|
||||
}
|
||||
|
||||
void tst_QCalendar::unspecified()
|
||||
{
|
||||
QFETCH(QCalendar::System, system);
|
||||
QCalendar cal(system);
|
||||
|
||||
const QDate today = QDate::currentDate();
|
||||
const int thisYear = today.year();
|
||||
QCOMPARE(cal.monthsInYear(QCalendar::Unspecified), cal.maximumMonthsInYear());
|
||||
for (int month = cal.maximumMonthsInYear(); month > 0; month--) {
|
||||
const int days = cal.daysInMonth(month);
|
||||
int count = 0;
|
||||
// 19 years = one Metonic cycle (used by some lunar calendars)
|
||||
for (int i = 19; i > 0; --i) {
|
||||
if (cal.daysInMonth(month, thisYear - i) == days)
|
||||
count++;
|
||||
}
|
||||
// Require a majority of the years tested:
|
||||
QVERIFY2(count > 9, "Default daysInMonth() should be for a normal year");
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QCalendar::nameCase()
|
||||
{
|
||||
QVERIFY(QCalendar::availableCalendars().contains(QStringLiteral("Gregorian")));
|
||||
|
Loading…
Reference in New Issue
Block a user