Commit 1721da0d33410e4d8970d34d3c8ce5221d78e93d
Committed by
Moritz Wirger
1 parent
2f287834
Separate AbsoluteTime and AbsoluteVariedTime.
Showing
5 changed files
with
101 additions
and
69 deletions
include/hueplusplus/TimePattern.h
| @@ -55,7 +55,6 @@ std::chrono::system_clock::time_point parseTimestamp(const std::string& timestam | @@ -55,7 +55,6 @@ std::chrono::system_clock::time_point parseTimestamp(const std::string& timestam | ||
| 55 | //! \throws HueException when time cannot be represented as time_point | 55 | //! \throws HueException when time cannot be represented as time_point |
| 56 | std::chrono::system_clock::time_point parseUTCTimestamp(const std::string& timestamp); | 56 | std::chrono::system_clock::time_point parseUTCTimestamp(const std::string& timestamp); |
| 57 | 57 | ||
| 58 | - | ||
| 59 | //! \brief Converts duration to a time string | 58 | //! \brief Converts duration to a time string |
| 60 | //! \param duration Duration or time of day to format. Must be less than 24 hours | 59 | //! \param duration Duration or time of day to format. Must be less than 24 hours |
| 61 | //! \returns Duration string in the format <code>hh:mm:ss</code> | 60 | //! \returns Duration string in the format <code>hh:mm:ss</code> |
| @@ -68,10 +67,7 @@ std::string durationTo_hh_mm_ss(std::chrono::system_clock::duration duration); | @@ -68,10 +67,7 @@ std::string durationTo_hh_mm_ss(std::chrono::system_clock::duration duration); | ||
| 68 | //! \throws std::invalid_argument when integer conversion fails | 67 | //! \throws std::invalid_argument when integer conversion fails |
| 69 | std::chrono::system_clock::duration parseDuration(const std::string& hourMinSec); | 68 | std::chrono::system_clock::duration parseDuration(const std::string& hourMinSec); |
| 70 | 69 | ||
| 71 | -//! \brief One-time, absolute time point with possible random variation | ||
| 72 | -//! | ||
| 73 | -//! Can be either used to represent a specific date and time, | ||
| 74 | -//! or a date and time with a random variation. | 70 | +//! \brief One-time, absolute time point |
| 75 | class AbsoluteTime | 71 | class AbsoluteTime |
| 76 | { | 72 | { |
| 77 | using clock = std::chrono::system_clock; | 73 | using clock = std::chrono::system_clock; |
| @@ -79,15 +75,46 @@ class AbsoluteTime | @@ -79,15 +75,46 @@ class AbsoluteTime | ||
| 79 | public: | 75 | public: |
| 80 | //! \brief Create absolute time point | 76 | //! \brief Create absolute time point |
| 81 | //! \param baseTime Absolute time point | 77 | //! \param baseTime Absolute time point |
| 82 | - //! \param variation Random variation, optional. When not zero, the time is randomly chosen between | ||
| 83 | - //! <code>baseTime - variation</code> and <code>baseTime + variation</code> | ||
| 84 | - explicit AbsoluteTime(clock::time_point baseTime, clock::duration variation = std::chrono::seconds(0)); | 78 | + explicit AbsoluteTime(clock::time_point baseTime); |
| 85 | 79 | ||
| 86 | //! \brief Get base time point | 80 | //! \brief Get base time point |
| 87 | //! | 81 | //! |
| 88 | //! Can be used for calculation with other system_clock time_points | 82 | //! Can be used for calculation with other system_clock time_points |
| 89 | clock::time_point getBaseTime() const; | 83 | clock::time_point getBaseTime() const; |
| 90 | 84 | ||
| 85 | + //! \brief Get formatted string as expected by Hue API | ||
| 86 | + //! \returns Timestamp in the format | ||
| 87 | + //! <code>YYYY-MM-DD</code><strong>T</strong><code>hh:mm:ss</code> | ||
| 88 | + std::string toString() const; | ||
| 89 | + | ||
| 90 | + //! \brief Parse AbsoluteTime from formatted string in local timezone | ||
| 91 | + //! \param s Timestamp in the same format as returned by \ref toString() | ||
| 92 | + //! \returns AbsoluteTime with base time and variation from \c s | ||
| 93 | + static AbsoluteTime parse(const std::string& s); | ||
| 94 | + | ||
| 95 | + //! \brief Parse AbsoluteTime from formatted UTC string | ||
| 96 | + //! \param s Timestamp in the same format as returned by \ref toString() | ||
| 97 | + //! \returns AbsoluteTime with base time and variation from \c s | ||
| 98 | + static AbsoluteTime parseUTC(const std::string& s); | ||
| 99 | + | ||
| 100 | +private: | ||
| 101 | + clock::time_point base; | ||
| 102 | +}; | ||
| 103 | +//! One-time, absolute time point with possible random variation | ||
| 104 | +//! | ||
| 105 | +//! Can be either used to represent a specific date and time, | ||
| 106 | +//! or a date and time with a random variation. | ||
| 107 | +class AbsoluteVariedTime : public AbsoluteTime | ||
| 108 | +{ | ||
| 109 | + using clock = std::chrono::system_clock; | ||
| 110 | + | ||
| 111 | +public: | ||
| 112 | + //! \brief Create absolute time point | ||
| 113 | + //! \param baseTime Absolute time point | ||
| 114 | + //! \param variation Random variation, optional. When not zero, the time is randomly chosen between | ||
| 115 | + //! <code>baseTime - variation</code> and <code>baseTime + variation</code> | ||
| 116 | + explicit AbsoluteVariedTime(clock::time_point baseTime, clock::duration variation = std::chrono::seconds(0)); | ||
| 117 | + | ||
| 91 | //! \brief Get random variation or zero | 118 | //! \brief Get random variation or zero |
| 92 | //! | 119 | //! |
| 93 | //! The time can vary up to this amount in both directions. | 120 | //! The time can vary up to this amount in both directions. |
| @@ -103,15 +130,10 @@ public: | @@ -103,15 +130,10 @@ public: | ||
| 103 | 130 | ||
| 104 | //! \brief Parse AbsoluteTime from formatted string in local timezone | 131 | //! \brief Parse AbsoluteTime from formatted string in local timezone |
| 105 | //! \param s Timestamp in the same format as returned by \ref toString() | 132 | //! \param s Timestamp in the same format as returned by \ref toString() |
| 106 | - //! \returns AbsoluteTime with base time and variation from \c s | ||
| 107 | - static AbsoluteTime parse(const std::string& s); | 133 | + //! \returns AbsoluteVariedTime with base time and variation from \c s |
| 134 | + static AbsoluteVariedTime parse(const std::string& s); | ||
| 108 | 135 | ||
| 109 | - //! \brief Parse AbsoluteTime from formatted UTC string | ||
| 110 | - //! \param s Timestamp in the same format as returned by \ref toString() | ||
| 111 | - //! \returns AbsoluteTime with base time and variation from \c s | ||
| 112 | - static AbsoluteTime parseUTC(const std::string& s); | ||
| 113 | private: | 136 | private: |
| 114 | - clock::time_point base; | ||
| 115 | clock::duration variation; | 137 | clock::duration variation; |
| 116 | }; | 138 | }; |
| 117 | 139 | ||
| @@ -122,10 +144,10 @@ class Weekdays | @@ -122,10 +144,10 @@ class Weekdays | ||
| 122 | { | 144 | { |
| 123 | public: | 145 | public: |
| 124 | //! \brief Create with no days | 146 | //! \brief Create with no days |
| 125 | - Weekdays() : bitmask(0) {} | 147 | + Weekdays() : bitmask(0) { } |
| 126 | //! \brief Create with the day \c num | 148 | //! \brief Create with the day \c num |
| 127 | //! \param num Day of the week, from monday (0) to sunday (6) | 149 | //! \param num Day of the week, from monday (0) to sunday (6) |
| 128 | - explicit Weekdays(int num) : bitmask(1 << num) {} | 150 | + explicit Weekdays(int num) : bitmask(1 << num) { } |
| 129 | 151 | ||
| 130 | //! \brief Check if no days are set | 152 | //! \brief Check if no days are set |
| 131 | bool isNone() const; | 153 | bool isNone() const; |
| @@ -332,7 +354,7 @@ public: | @@ -332,7 +354,7 @@ public: | ||
| 332 | enum class Type | 354 | enum class Type |
| 333 | { | 355 | { |
| 334 | undefined, //!< \brief No active type | 356 | undefined, //!< \brief No active type |
| 335 | - absolute, //!< \brief Active type is AbsoluteTime | 357 | + absolute, //!< \brief Active type is AbsoluteVariedTime |
| 336 | recurring, //!< \brief Active type is RecurringTime | 358 | recurring, //!< \brief Active type is RecurringTime |
| 337 | interval, //!< \brief Active type is TimeInterval | 359 | interval, //!< \brief Active type is TimeInterval |
| 338 | timer //!< \brief Active type is Timer | 360 | timer //!< \brief Active type is Timer |
| @@ -342,8 +364,8 @@ public: | @@ -342,8 +364,8 @@ public: | ||
| 342 | TimePattern(); | 364 | TimePattern(); |
| 343 | //! \brief Destructor for union. | 365 | //! \brief Destructor for union. |
| 344 | ~TimePattern(); | 366 | ~TimePattern(); |
| 345 | - //! \brief Create TimePattern from AbsoluteTime | ||
| 346 | - explicit TimePattern(const AbsoluteTime& absolute); | 367 | + //! \brief Create TimePattern from AbsoluteVariedTime |
| 368 | + explicit TimePattern(const AbsoluteVariedTime& absolute); | ||
| 347 | //! \brief Create TimePattern from RecurringTime | 369 | //! \brief Create TimePattern from RecurringTime |
| 348 | explicit TimePattern(const RecurringTime& recurring); | 370 | explicit TimePattern(const RecurringTime& recurring); |
| 349 | //! \brief Create TimePattern from TimeInterval | 371 | //! \brief Create TimePattern from TimeInterval |
| @@ -364,7 +386,7 @@ public: | @@ -364,7 +386,7 @@ public: | ||
| 364 | 386 | ||
| 365 | //! \brief Get contained absolute time | 387 | //! \brief Get contained absolute time |
| 366 | //! \pre getType() == Type::absolute | 388 | //! \pre getType() == Type::absolute |
| 367 | - AbsoluteTime asAbsolute() const; | 389 | + AbsoluteVariedTime asAbsolute() const; |
| 368 | 390 | ||
| 369 | //! \brief Get contained recurring time | 391 | //! \brief Get contained recurring time |
| 370 | //! \pre getType() == Type::recurring | 392 | //! \pre getType() == Type::recurring |
| @@ -401,7 +423,7 @@ private: | @@ -401,7 +423,7 @@ private: | ||
| 401 | union | 423 | union |
| 402 | { | 424 | { |
| 403 | nullptr_t undefined; | 425 | nullptr_t undefined; |
| 404 | - AbsoluteTime absolute; | 426 | + AbsoluteVariedTime absolute; |
| 405 | RecurringTime recurring; | 427 | RecurringTime recurring; |
| 406 | TimeInterval interval; | 428 | TimeInterval interval; |
| 407 | Timer timer; | 429 | Timer timer; |
src/TimePattern.cpp
| @@ -143,52 +143,62 @@ system_clock::duration parseDuration(const std::string& s) | @@ -143,52 +143,62 @@ system_clock::duration parseDuration(const std::string& s) | ||
| 143 | return hour + min + sec; | 143 | return hour + min + sec; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | -AbsoluteTime::AbsoluteTime(clock::time_point baseTime, clock::duration variation) : base(baseTime), variation(variation) | ||
| 147 | -{} | 146 | +AbsoluteTime::AbsoluteTime(clock::time_point baseTime) : base(baseTime) { } |
| 148 | 147 | ||
| 149 | system_clock::time_point AbsoluteTime::getBaseTime() const | 148 | system_clock::time_point AbsoluteTime::getBaseTime() const |
| 150 | { | 149 | { |
| 151 | return base; | 150 | return base; |
| 152 | } | 151 | } |
| 153 | -system_clock::duration AbsoluteTime::getRandomVariation() const | ||
| 154 | -{ | ||
| 155 | - return variation; | ||
| 156 | -} | ||
| 157 | std::string AbsoluteTime::toString() const | 152 | std::string AbsoluteTime::toString() const |
| 158 | { | 153 | { |
| 159 | - std::string result = timepointToTimestamp(base); | ||
| 160 | - if (variation.count() != 0) | ||
| 161 | - { | ||
| 162 | - result.push_back('A'); | ||
| 163 | - result.append(durationTo_hh_mm_ss(variation)); | ||
| 164 | - } | ||
| 165 | - return result; | 154 | + return timepointToTimestamp(base); |
| 166 | } | 155 | } |
| 167 | 156 | ||
| 168 | AbsoluteTime AbsoluteTime::parse(const std::string& s) | 157 | AbsoluteTime AbsoluteTime::parse(const std::string& s) |
| 169 | { | 158 | { |
| 170 | // Absolute time | 159 | // Absolute time |
| 171 | clock::time_point time = parseTimestamp(s); | 160 | clock::time_point time = parseTimestamp(s); |
| 172 | - clock::duration variation {0}; | ||
| 173 | - if (s.size() > 19 && s[19] == 'A') | ||
| 174 | - { | ||
| 175 | - // Random variation | ||
| 176 | - variation = parseDuration(s.substr(20)); | ||
| 177 | - } | ||
| 178 | - return AbsoluteTime(time, variation); | 161 | + return AbsoluteTime(time); |
| 179 | } | 162 | } |
| 180 | 163 | ||
| 181 | AbsoluteTime AbsoluteTime::parseUTC(const std::string& s) | 164 | AbsoluteTime AbsoluteTime::parseUTC(const std::string& s) |
| 182 | { | 165 | { |
| 183 | // Absolute time | 166 | // Absolute time |
| 184 | clock::time_point time = parseUTCTimestamp(s); | 167 | clock::time_point time = parseUTCTimestamp(s); |
| 168 | + return AbsoluteTime(time); | ||
| 169 | +} | ||
| 170 | + | ||
| 171 | +AbsoluteVariedTime::AbsoluteVariedTime(clock::time_point baseTime, clock::duration variation) | ||
| 172 | + : AbsoluteTime(baseTime), variation(variation) | ||
| 173 | +{ } | ||
| 174 | + | ||
| 175 | +system_clock::duration AbsoluteVariedTime::getRandomVariation() const | ||
| 176 | +{ | ||
| 177 | + return variation; | ||
| 178 | +} | ||
| 179 | + | ||
| 180 | +AbsoluteVariedTime AbsoluteVariedTime::parse(const std::string& s) | ||
| 181 | +{ | ||
| 182 | + // Absolute time | ||
| 183 | + clock::time_point time = parseTimestamp(s); | ||
| 185 | clock::duration variation {0}; | 184 | clock::duration variation {0}; |
| 186 | if (s.size() > 19 && s[19] == 'A') | 185 | if (s.size() > 19 && s[19] == 'A') |
| 187 | { | 186 | { |
| 188 | // Random variation | 187 | // Random variation |
| 189 | variation = parseDuration(s.substr(20)); | 188 | variation = parseDuration(s.substr(20)); |
| 190 | } | 189 | } |
| 191 | - return AbsoluteTime(time, variation); | 190 | + return AbsoluteVariedTime(time, variation); |
| 191 | +} | ||
| 192 | + | ||
| 193 | +std::string AbsoluteVariedTime::toString() const | ||
| 194 | +{ | ||
| 195 | + std::string result = timepointToTimestamp(getBaseTime()); | ||
| 196 | + if (variation.count() != 0) | ||
| 197 | + { | ||
| 198 | + result.push_back('A'); | ||
| 199 | + result.append(durationTo_hh_mm_ss(variation)); | ||
| 200 | + } | ||
| 201 | + return result; | ||
| 192 | } | 202 | } |
| 193 | 203 | ||
| 194 | bool Weekdays::isNone() const | 204 | bool Weekdays::isNone() const |
| @@ -309,7 +319,7 @@ Weekdays Weekdays::parse(const std::string& s) | @@ -309,7 +319,7 @@ Weekdays Weekdays::parse(const std::string& s) | ||
| 309 | 319 | ||
| 310 | RecurringTime::RecurringTime(clock::duration daytime, Weekdays days, clock::duration variation) | 320 | RecurringTime::RecurringTime(clock::duration daytime, Weekdays days, clock::duration variation) |
| 311 | : time(daytime), variation(variation), days(days) | 321 | : time(daytime), variation(variation), days(days) |
| 312 | -{} | 322 | +{ } |
| 313 | 323 | ||
| 314 | system_clock::duration RecurringTime::getDaytime() const | 324 | system_clock::duration RecurringTime::getDaytime() const |
| 315 | { | 325 | { |
| @@ -342,7 +352,7 @@ std::string RecurringTime::toString() const | @@ -342,7 +352,7 @@ std::string RecurringTime::toString() const | ||
| 342 | 352 | ||
| 343 | TimeInterval::TimeInterval(clock::duration start, clock::duration end, Weekdays days) | 353 | TimeInterval::TimeInterval(clock::duration start, clock::duration end, Weekdays days) |
| 344 | : start(start), end(end), days(days) | 354 | : start(start), end(end), days(days) |
| 345 | -{} | 355 | +{ } |
| 346 | 356 | ||
| 347 | system_clock::duration TimeInterval::getStartTime() const | 357 | system_clock::duration TimeInterval::getStartTime() const |
| 348 | { | 358 | { |
| @@ -378,11 +388,11 @@ std::string TimeInterval::toString() const | @@ -378,11 +388,11 @@ std::string TimeInterval::toString() const | ||
| 378 | 388 | ||
| 379 | Timer::Timer(clock::duration duration, clock::duration variation) | 389 | Timer::Timer(clock::duration duration, clock::duration variation) |
| 380 | : expires(duration), variation(variation), numExecutions(1) | 390 | : expires(duration), variation(variation), numExecutions(1) |
| 381 | -{} | 391 | +{ } |
| 382 | 392 | ||
| 383 | Timer::Timer(clock::duration duration, int numExecutions, clock::duration variation) | 393 | Timer::Timer(clock::duration duration, int numExecutions, clock::duration variation) |
| 384 | : expires(duration), variation(variation), numExecutions(numExecutions) | 394 | : expires(duration), variation(variation), numExecutions(numExecutions) |
| 385 | -{} | 395 | +{ } |
| 386 | 396 | ||
| 387 | bool Timer::isRecurring() const | 397 | bool Timer::isRecurring() const |
| 388 | { | 398 | { |
| @@ -432,20 +442,20 @@ std::string Timer::toString() const | @@ -432,20 +442,20 @@ std::string Timer::toString() const | ||
| 432 | return result; | 442 | return result; |
| 433 | } | 443 | } |
| 434 | 444 | ||
| 435 | -TimePattern::TimePattern() : type(Type::undefined), undefined(nullptr) {} | 445 | +TimePattern::TimePattern() : type(Type::undefined), undefined(nullptr) { } |
| 436 | 446 | ||
| 437 | TimePattern::~TimePattern() | 447 | TimePattern::~TimePattern() |
| 438 | { | 448 | { |
| 439 | destroy(); | 449 | destroy(); |
| 440 | } | 450 | } |
| 441 | 451 | ||
| 442 | -TimePattern::TimePattern(const AbsoluteTime& absolute) : type(Type::absolute), absolute(absolute) {} | 452 | +TimePattern::TimePattern(const AbsoluteVariedTime& absolute) : type(Type::absolute), absolute(absolute) { } |
| 443 | 453 | ||
| 444 | -TimePattern::TimePattern(const RecurringTime& recurring) : type(Type::recurring), recurring(recurring) {} | 454 | +TimePattern::TimePattern(const RecurringTime& recurring) : type(Type::recurring), recurring(recurring) { } |
| 445 | 455 | ||
| 446 | -TimePattern::TimePattern(const TimeInterval& interval) : type(Type::interval), interval(interval) {} | 456 | +TimePattern::TimePattern(const TimeInterval& interval) : type(Type::interval), interval(interval) { } |
| 447 | 457 | ||
| 448 | -TimePattern::TimePattern(const Timer& timer) : type(Type::timer), timer(timer) {} | 458 | +TimePattern::TimePattern(const Timer& timer) : type(Type::timer), timer(timer) { } |
| 449 | 459 | ||
| 450 | TimePattern::TimePattern(const TimePattern& other) : type(Type::undefined), undefined(nullptr) | 460 | TimePattern::TimePattern(const TimePattern& other) : type(Type::undefined), undefined(nullptr) |
| 451 | { | 461 | { |
| @@ -496,7 +506,7 @@ TimePattern::Type TimePattern::getType() const | @@ -496,7 +506,7 @@ TimePattern::Type TimePattern::getType() const | ||
| 496 | return type; | 506 | return type; |
| 497 | } | 507 | } |
| 498 | 508 | ||
| 499 | -AbsoluteTime TimePattern::asAbsolute() const | 509 | +AbsoluteVariedTime TimePattern::asAbsolute() const |
| 500 | { | 510 | { |
| 501 | return absolute; | 511 | return absolute; |
| 502 | } | 512 | } |
| @@ -543,7 +553,7 @@ TimePattern TimePattern::parse(const std::string& s) | @@ -543,7 +553,7 @@ TimePattern TimePattern::parse(const std::string& s) | ||
| 543 | } | 553 | } |
| 544 | else if (std::isdigit(s.front())) | 554 | else if (std::isdigit(s.front())) |
| 545 | { | 555 | { |
| 546 | - return TimePattern(AbsoluteTime::parse(s)); | 556 | + return TimePattern(AbsoluteVariedTime::parse(s)); |
| 547 | } | 557 | } |
| 548 | else if (s.front() == 'R' || s.front() == 'P') | 558 | else if (s.front() == 'R' || s.front() == 'P') |
| 549 | { | 559 | { |
| @@ -606,7 +616,7 @@ void TimePattern::destroy() | @@ -606,7 +616,7 @@ void TimePattern::destroy() | ||
| 606 | switch (type) | 616 | switch (type) |
| 607 | { | 617 | { |
| 608 | case Type::absolute: | 618 | case Type::absolute: |
| 609 | - absolute.~AbsoluteTime(); | 619 | + absolute.~AbsoluteVariedTime(); |
| 610 | break; | 620 | break; |
| 611 | case Type::recurring: | 621 | case Type::recurring: |
| 612 | recurring.~RecurringTime(); | 622 | recurring.~RecurringTime(); |
test/test_Scene.cpp
| @@ -272,7 +272,7 @@ TEST_F(SceneTest, getLastUpdated) | @@ -272,7 +272,7 @@ TEST_F(SceneTest, getLastUpdated) | ||
| 272 | expectGetState(id); | 272 | expectGetState(id); |
| 273 | const Scene scene(id, commands, std::chrono::seconds(0)); | 273 | const Scene scene(id, commands, std::chrono::seconds(0)); |
| 274 | const time::AbsoluteTime lastUpdated = scene.getLastUpdated(); | 274 | const time::AbsoluteTime lastUpdated = scene.getLastUpdated(); |
| 275 | - EXPECT_EQ(std::chrono::seconds(0), lastUpdated.getRandomVariation()); | 275 | + EXPECT_EQ(time::parseUTCTimestamp("2020-04-23T12:00:04"), lastUpdated.getBaseTime()); |
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | TEST_F(SceneTest, getVersion) | 278 | TEST_F(SceneTest, getVersion) |
test/test_Schedule.cpp
| @@ -239,7 +239,7 @@ TEST_F(ScheduleTest, setTime) | @@ -239,7 +239,7 @@ TEST_F(ScheduleTest, setTime) | ||
| 239 | const int id = 1; | 239 | const int id = 1; |
| 240 | expectGetState(id); | 240 | expectGetState(id); |
| 241 | Schedule schedule(id, commands, std::chrono::steady_clock::duration::max()); | 241 | Schedule schedule(id, commands, std::chrono::steady_clock::duration::max()); |
| 242 | - time::TimePattern time {time::AbsoluteTime(std::chrono::system_clock::now())}; | 242 | + time::TimePattern time {time::AbsoluteVariedTime(std::chrono::system_clock::now())}; |
| 243 | nlohmann::json request = {{"localtime", time.toString()}}; | 243 | nlohmann::json request = {{"localtime", time.toString()}}; |
| 244 | nlohmann::json response = {{"success", {"/schedules/1/localtime", time.toString()}}}; | 244 | nlohmann::json response = {{"success", {"/schedules/1/localtime", time.toString()}}}; |
| 245 | EXPECT_CALL( | 245 | EXPECT_CALL( |
| @@ -320,7 +320,7 @@ TEST(CreateSchedule, setCommand) | @@ -320,7 +320,7 @@ TEST(CreateSchedule, setCommand) | ||
| 320 | 320 | ||
| 321 | TEST(CreateSchedule, setTime) | 321 | TEST(CreateSchedule, setTime) |
| 322 | { | 322 | { |
| 323 | - const time::AbsoluteTime time(std::chrono::system_clock::now()); | 323 | + const time::AbsoluteVariedTime time(std::chrono::system_clock::now()); |
| 324 | const nlohmann::json request = {{"localtime", time.toString()}}; | 324 | const nlohmann::json request = {{"localtime", time.toString()}}; |
| 325 | EXPECT_EQ(request, CreateSchedule().setTime(time::TimePattern(time)).getRequest()); | 325 | EXPECT_EQ(request, CreateSchedule().setTime(time::TimePattern(time)).getRequest()); |
| 326 | } | 326 | } |
test/test_TimePattern.cpp
| @@ -78,33 +78,33 @@ TEST(Time, durationTo_hh_mm_ss) | @@ -78,33 +78,33 @@ TEST(Time, durationTo_hh_mm_ss) | ||
| 78 | EXPECT_EQ(duration, parseDuration(durationTo_hh_mm_ss(duration))); | 78 | EXPECT_EQ(duration, parseDuration(durationTo_hh_mm_ss(duration))); |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | -TEST(AbsoluteTime, Constructor) | 81 | +TEST(AbsoluteVariedTime, Constructor) |
| 82 | { | 82 | { |
| 83 | system_clock::time_point now = system_clock::now(); | 83 | system_clock::time_point now = system_clock::now(); |
| 84 | { | 84 | { |
| 85 | - AbsoluteTime time(now); | 85 | + AbsoluteVariedTime time(now); |
| 86 | EXPECT_EQ(now, time.getBaseTime()); | 86 | EXPECT_EQ(now, time.getBaseTime()); |
| 87 | EXPECT_EQ(0s, time.getRandomVariation()); | 87 | EXPECT_EQ(0s, time.getRandomVariation()); |
| 88 | } | 88 | } |
| 89 | system_clock::duration variation = 4h + 2min; | 89 | system_clock::duration variation = 4h + 2min; |
| 90 | { | 90 | { |
| 91 | - AbsoluteTime time(now, variation); | 91 | + AbsoluteVariedTime time(now, variation); |
| 92 | EXPECT_EQ(now, time.getBaseTime()); | 92 | EXPECT_EQ(now, time.getBaseTime()); |
| 93 | EXPECT_EQ(variation, time.getRandomVariation()); | 93 | EXPECT_EQ(variation, time.getRandomVariation()); |
| 94 | } | 94 | } |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | -TEST(AbsoluteTime, toString) | 97 | +TEST(AbsoluteVariedTime, toString) |
| 98 | { | 98 | { |
| 99 | const system_clock::time_point timePoint = parseTimestamp("2020-03-03T20:53:03"); | 99 | const system_clock::time_point timePoint = parseTimestamp("2020-03-03T20:53:03"); |
| 100 | 100 | ||
| 101 | - EXPECT_EQ("2020-03-03T20:53:03", AbsoluteTime(timePoint).toString()); | 101 | + EXPECT_EQ("2020-03-03T20:53:03", AbsoluteVariedTime(timePoint).toString()); |
| 102 | 102 | ||
| 103 | const system_clock::duration noVariation = 0s; | 103 | const system_clock::duration noVariation = 0s; |
| 104 | - EXPECT_EQ("2020-03-03T20:53:03", AbsoluteTime(timePoint, noVariation).toString()); | 104 | + EXPECT_EQ("2020-03-03T20:53:03", AbsoluteVariedTime(timePoint, noVariation).toString()); |
| 105 | 105 | ||
| 106 | const system_clock::duration variation = 1h + 2min + 1s; | 106 | const system_clock::duration variation = 1h + 2min + 1s; |
| 107 | - EXPECT_EQ("2020-03-03T20:53:03A01:02:01", AbsoluteTime(timePoint, variation).toString()); | 107 | + EXPECT_EQ("2020-03-03T20:53:03A01:02:01", AbsoluteVariedTime(timePoint, variation).toString()); |
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | TEST(AbsoluteTime, parseUTC) | 110 | TEST(AbsoluteTime, parseUTC) |
| @@ -361,7 +361,7 @@ TEST(TimePattern, CopyConstructor) | @@ -361,7 +361,7 @@ TEST(TimePattern, CopyConstructor) | ||
| 361 | EXPECT_EQ(TimePattern::Type::undefined, copy.getType()); | 361 | EXPECT_EQ(TimePattern::Type::undefined, copy.getType()); |
| 362 | } | 362 | } |
| 363 | { | 363 | { |
| 364 | - const AbsoluteTime abs(system_clock::now()); | 364 | + const AbsoluteVariedTime abs(system_clock::now()); |
| 365 | const TimePattern pattern(abs); | 365 | const TimePattern pattern(abs); |
| 366 | const TimePattern copy(pattern); | 366 | const TimePattern copy(pattern); |
| 367 | ASSERT_EQ(TimePattern::Type::absolute, copy.getType()); | 367 | ASSERT_EQ(TimePattern::Type::absolute, copy.getType()); |
| @@ -399,7 +399,7 @@ TEST(TimePattern, CopyConstructor) | @@ -399,7 +399,7 @@ TEST(TimePattern, CopyConstructor) | ||
| 399 | TEST(TimePattern, Absolute) | 399 | TEST(TimePattern, Absolute) |
| 400 | { | 400 | { |
| 401 | { | 401 | { |
| 402 | - const AbsoluteTime abs(system_clock::now(), 20s); | 402 | + const AbsoluteVariedTime abs(system_clock::now(), 20s); |
| 403 | const TimePattern pattern(abs); | 403 | const TimePattern pattern(abs); |
| 404 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); | 404 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); |
| 405 | EXPECT_EQ(abs.getBaseTime(), pattern.asAbsolute().getBaseTime()); | 405 | EXPECT_EQ(abs.getBaseTime(), pattern.asAbsolute().getBaseTime()); |
| @@ -409,7 +409,7 @@ TEST(TimePattern, Absolute) | @@ -409,7 +409,7 @@ TEST(TimePattern, Absolute) | ||
| 409 | const system_clock::time_point timePoint = parseTimestamp("2020-03-03T20:53:03"); | 409 | const system_clock::time_point timePoint = parseTimestamp("2020-03-03T20:53:03"); |
| 410 | { | 410 | { |
| 411 | const TimePattern pattern = TimePattern::parse("2020-03-03T20:53:03"); | 411 | const TimePattern pattern = TimePattern::parse("2020-03-03T20:53:03"); |
| 412 | - const AbsoluteTime expected(timePoint); | 412 | + const AbsoluteVariedTime expected(timePoint); |
| 413 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); | 413 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); |
| 414 | EXPECT_EQ(expected.getBaseTime(), pattern.asAbsolute().getBaseTime()); | 414 | EXPECT_EQ(expected.getBaseTime(), pattern.asAbsolute().getBaseTime()); |
| 415 | EXPECT_EQ(expected.getRandomVariation(), pattern.asAbsolute().getRandomVariation()); | 415 | EXPECT_EQ(expected.getRandomVariation(), pattern.asAbsolute().getRandomVariation()); |
| @@ -417,7 +417,7 @@ TEST(TimePattern, Absolute) | @@ -417,7 +417,7 @@ TEST(TimePattern, Absolute) | ||
| 417 | { | 417 | { |
| 418 | const system_clock::duration variation = 1h + 2min + 1s; | 418 | const system_clock::duration variation = 1h + 2min + 1s; |
| 419 | const TimePattern pattern = TimePattern::parse("2020-03-03T20:53:03A01:02:01"); | 419 | const TimePattern pattern = TimePattern::parse("2020-03-03T20:53:03A01:02:01"); |
| 420 | - const AbsoluteTime expected(timePoint, variation); | 420 | + const AbsoluteVariedTime expected(timePoint, variation); |
| 421 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); | 421 | ASSERT_EQ(TimePattern::Type::absolute, pattern.getType()); |
| 422 | EXPECT_EQ(expected.getBaseTime(), pattern.asAbsolute().getBaseTime()); | 422 | EXPECT_EQ(expected.getBaseTime(), pattern.asAbsolute().getBaseTime()); |
| 423 | EXPECT_EQ(expected.getRandomVariation(), pattern.asAbsolute().getRandomVariation()); | 423 | EXPECT_EQ(expected.getRandomVariation(), pattern.asAbsolute().getRandomVariation()); |