AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
HolidayDateCalculatorTest Class Reference
Inheritance diagram for HolidayDateCalculatorTest:

Protected Member Functions

void ExpectDate (std::tm const &date, int year, int month, int day)
 
bool IsValidDate (int year, int month, int day)
 
bool IsLeapYear (int year)
 
void NormalizeTm (std::tm &date)
 

Detailed Description

Member Function Documentation

◆ ExpectDate()

void HolidayDateCalculatorTest::ExpectDate ( std::tm const &  date,
int  year,
int  month,
int  day 
)
inlineprotected
25 {
26 EXPECT_EQ(date.tm_year + 1900, year);
27 EXPECT_EQ(date.tm_mon + 1, month);
28 EXPECT_EQ(date.tm_mday, day);
29 }

◆ IsLeapYear()

bool HolidayDateCalculatorTest::IsLeapYear ( int  year)
inlineprotected
52 {
53 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
54 }

Referenced by NormalizeTm().

◆ IsValidDate()

bool HolidayDateCalculatorTest::IsValidDate ( int  year,
int  month,
int  day 
)
inlineprotected
33 {
34 if (month < 1 || month > 12) return false;
35 if (day < 1 || day > 31) return false;
36
37 // Check days in month
38 int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
39
40 // Leap year check for February
41 if (month == 2)
42 {
43 bool isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
44 if (isLeap) daysInMonth[2] = 29;
45 }
46
47 return day <= daysInMonth[month];
48 }

◆ NormalizeTm()

void HolidayDateCalculatorTest::NormalizeTm ( std::tm &  date)
inlineprotected
60 {
61 static int const table[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
62 auto daysInMonth = [&](int y, int m)
63 {
64 return (m == 2 && IsLeapYear(y)) ? 29 : table[m - 1];
65 };
66
67 int year = date.tm_year + 1900;
68 int month = date.tm_mon + 1;
69 int day = date.tm_mday;
70
71 while (day > daysInMonth(year, month))
72 {
73 day -= daysInMonth(year, month);
74 if (++month > 12)
75 {
76 month = 1;
77 ++year;
78 }
79 }
80 while (day < 1)
81 {
82 if (--month < 1)
83 {
84 month = 12;
85 --year;
86 }
87 day += daysInMonth(year, month);
88 }
89
90 date.tm_year = year - 1900;
91 date.tm_mon = month - 1;
92 date.tm_mday = day;
93 }
bool IsLeapYear(int year)
Definition HolidayDateCalculatorTest.cpp:51

References IsLeapYear().


The documentation for this class was generated from the following file: