| 24 | using namespace openstudio::model; |
| 25 | |
| 26 | TEST_F(ModelFixture, RunPeriodControlSpecialDays) { |
| 27 | Model model; |
| 28 | model::YearDescription yd = model.getUniqueModelObject<model::YearDescription>(); |
| 29 | yd.setCalendarYear(2008); |
| 30 | |
| 31 | /* February 2008 |
| 32 | Su Mo Tu We Th Fr Sa |
| 33 | 1 2 |
| 34 | 3 4 5 6 7 8 9 |
| 35 | 10 11 12 13 14 15 16 |
| 36 | 17 18 19 20 21 22 23 |
| 37 | 24 25 26 27 28 29 |
| 38 | */ |
| 39 | |
| 40 | RunPeriodControlSpecialDays day(MonthOfYear::Feb, 14, model); |
| 41 | ASSERT_NO_THROW(day.startDate()); |
| 42 | EXPECT_EQ(14u, day.startDate().dayOfMonth()); |
| 43 | EXPECT_EQ(MonthOfYear::Feb, day.startDate().monthOfYear().value()); |
| 44 | EXPECT_EQ(DayOfWeek::Thursday, day.startDate().dayOfWeek().value()); |
| 45 | |
| 46 | day = RunPeriodControlSpecialDays(NthDayOfWeekInMonth::first, DayOfWeek::Monday, MonthOfYear::Feb, model); |
| 47 | ASSERT_NO_THROW(day.startDate()); |
| 48 | EXPECT_EQ(4u, day.startDate().dayOfMonth()); |
| 49 | EXPECT_EQ(MonthOfYear::Feb, day.startDate().monthOfYear().value()); |
| 50 | EXPECT_EQ(DayOfWeek::Monday, day.startDate().dayOfWeek().value()); |
| 51 | |
| 52 | day = RunPeriodControlSpecialDays(NthDayOfWeekInMonth::fourth, DayOfWeek::Monday, MonthOfYear::Feb, model); |
| 53 | ASSERT_NO_THROW(day.startDate()); |
| 54 | EXPECT_EQ(25u, day.startDate().dayOfMonth()); |
| 55 | EXPECT_EQ(MonthOfYear::Feb, day.startDate().monthOfYear().value()); |
| 56 | EXPECT_EQ(DayOfWeek::Monday, day.startDate().dayOfWeek().value()); |
| 57 | EXPECT_EQ("4th Monday in February", day.getString(OS_RunPeriodControl_SpecialDaysFields::StartDate).get()); |
| 58 | |
| 59 | // there is no fifth monday, this will return the last |
| 60 | day = RunPeriodControlSpecialDays(NthDayOfWeekInMonth::fifth, DayOfWeek::Monday, MonthOfYear::Feb, model); |
| 61 | ASSERT_NO_THROW(day.startDate()); |
| 62 | EXPECT_EQ(25u, day.startDate().dayOfMonth()); |
| 63 | EXPECT_EQ(MonthOfYear::Feb, day.startDate().monthOfYear().value()); |
| 64 | EXPECT_EQ(DayOfWeek::Monday, day.startDate().dayOfWeek().value()); |
| 65 | |
| 66 | day = RunPeriodControlSpecialDays(NthDayOfWeekInMonth::fifth, DayOfWeek::Friday, MonthOfYear::Feb, model); |
| 67 | ASSERT_NO_THROW(day.startDate()); |
| 68 | EXPECT_EQ(29u, day.startDate().dayOfMonth()); |
| 69 | EXPECT_EQ(MonthOfYear::Feb, day.startDate().monthOfYear().value()); |
| 70 | EXPECT_EQ(DayOfWeek::Friday, day.startDate().dayOfWeek().value()); |
| 71 | } |
nothing calls this directly
no test coverage detected