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/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the QtCore module of the Qt Toolkit.
|
** 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.
|
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
|
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.
|
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
|
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/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the test suite of the Qt Toolkit.
|
** This file is part of the test suite of the Qt Toolkit.
|
||||||
@ -40,6 +40,8 @@ private:
|
|||||||
private slots:
|
private slots:
|
||||||
void basic_data();
|
void basic_data();
|
||||||
void basic();
|
void basic();
|
||||||
|
void unspecified_data() { basic_data(); }
|
||||||
|
void unspecified();
|
||||||
void nameCase();
|
void nameCase();
|
||||||
void specific_data();
|
void specific_data();
|
||||||
void specific();
|
void specific();
|
||||||
@ -145,6 +147,27 @@ void tst_QCalendar::basic()
|
|||||||
NORMALYEAR(cal, year);
|
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()
|
void tst_QCalendar::nameCase()
|
||||||
{
|
{
|
||||||
QVERIFY(QCalendar::availableCalendars().contains(QStringLiteral("Gregorian")));
|
QVERIFY(QCalendar::availableCalendars().contains(QStringLiteral("Gregorian")));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user