From 19e385f369550f84bfa720c54682233c20e9983c Mon Sep 17 00:00:00 2001 From: Sergey Magidovich Date: Thu, 25 Feb 2016 12:46:48 +0300 Subject: [PATCH] Fix parsing of opening hours with no days set. --- editor/editor_tests/ui2oh_test.cpp | 44 +++++++++++++++++++++++++++++- editor/ui2oh.cpp | 14 +++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/editor/editor_tests/ui2oh_test.cpp b/editor/editor_tests/ui2oh_test.cpp index 0eeaa63486..d463ebf921 100644 --- a/editor/editor_tests/ui2oh_test.cpp +++ b/editor/editor_tests/ui2oh_test.cpp @@ -18,6 +18,21 @@ string ToString(OpeningHours const & oh) UNIT_TEST(OpeningHours2TimeTableSt) { + { + OpeningHours oh("08:00-22:00"); + TEST(oh.IsValid(), ()); + + TimeTableSet tts; + + TEST(MakeTimeTableSet(oh, tts), ()); + TEST_EQUAL(tts.Size(), 1, ()); + + auto const tt = tts.Front(); + TEST(!tt.IsTwentyFourHours(), ()); + TEST_EQUAL(tt.GetOpeningDays().size(), 7, ()); + TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ()); + TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ()); + } { OpeningHours oh("Mo-Fr 08:00-22:00"); TEST(oh.IsValid(), ()); @@ -157,7 +172,7 @@ UNIT_TEST(OpeningHours2TimeTableSt) } } { - OpeningHours oh("Mo-Fr 08:00-13:00,14:00-20:00; Sa 09:00-13:00,14:00-18:00; Su off"); + OpeningHours oh("Mo-Fr 08:00-13:00,14:00-20:00; Sa 09:00-13:00,14:00-18:00"); TEST(oh.IsValid(), ()); TimeTableSet tts; @@ -177,6 +192,15 @@ UNIT_TEST(OpeningHours2TimeTableSt) TEST_EQUAL(tt.GetOpeningDays().size(), 1, ()); } } + { + // We don't handle offs for for now. + OpeningHours oh("Mo-Fr 08:00-13:00,14:00-20:00; Sa 09:00-13:00,14:00-18:00; Su off"); + TEST(oh.IsValid(), ()); + + TimeTableSet tts; + + TEST(!MakeTimeTableSet(oh, tts), ()); + } } UNIT_TEST(TimeTableSt2OpeningHours) @@ -185,6 +209,24 @@ UNIT_TEST(TimeTableSt2OpeningHours) TimeTableSet tts; TEST_EQUAL(ToString(MakeOpeningHours(tts)), "24/7", ()); } + { + TimeTableSet tts; + auto tt = tts.Front(); + TEST(tt.SetOpeningDays({ + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday, + osmoh::Weekday::Saturday, + osmoh::Weekday::Sunday}), ()); + + tt.SetTwentyFourHours(false); + TEST(tt.SetOpeningTime({8_h, 22_h}), ()); + TEST(tt.Commit(), ()); + + TEST_EQUAL(ToString(MakeOpeningHours(tts)), "Mo-Su 08:00-22:00", ()); + } { TimeTableSet tts; auto tt = tts.Front(); diff --git a/editor/ui2oh.cpp b/editor/ui2oh.cpp index 72e1c9fa47..179cc56f4b 100644 --- a/editor/ui2oh.cpp +++ b/editor/ui2oh.cpp @@ -154,6 +154,16 @@ osmoh::TTimespans MakeTimespans(editor::ui::TimeTable const & tt) return spans; } + +editor::ui::TOpeningDays const kWholeWeek = { + osmoh::Weekday::Monday, + osmoh::Weekday::Tuesday, + osmoh::Weekday::Wednesday, + osmoh::Weekday::Thursday, + osmoh::Weekday::Friday, + osmoh::Weekday::Saturday, + osmoh::Weekday::Sunday +}; } // namespace namespace editor @@ -205,10 +215,12 @@ bool MakeTimeTableSet(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts) if (rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Closed || rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Unknown || rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Comment) - continue; + return false; if (rulePart.HasWeekdays()) SetUpWeekdays(rulePart.GetWeekdays(), tt); + else + tt.SetOpeningDays(kWholeWeek); if (rulePart.HasTimes()) {