DateParameterMapperTest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Co-Author: Claude Sonnet 4.6 (LLM)
  4. * Company: Lynar Studios
  5. * E-Mail: webmaster@lynarstudios.com
  6. * Created: 2023-03-31
  7. * Changed: 2026-06-23
  8. *
  9. * */
  10. #include <gtest/gtest.h>
  11. #include <ls-std/ls-std-time.hpp>
  12. #include <utility>
  13. #include <vector>
  14. #ifdef _WIN32
  15. #define NOMINMAX
  16. #include <windows.h>
  17. #endif
  18. using ls::standard::time::DateParameter;
  19. using ls::standard::time::DateParameterMapper;
  20. using ls::standard::time::type::UnixTimestamp;
  21. using std::pair;
  22. using std::vector;
  23. using testing::TestWithParam;
  24. using testing::Values;
  25. namespace
  26. {
  27. #if defined(unix) || defined(__APPLE__)
  28. class DateParameterMapperTest_Unix : public TestWithParam<pair<UnixTimestamp, DateParameter>>
  29. {
  30. public:
  31. DateParameterMapperTest_Unix() = default;
  32. ~DateParameterMapperTest_Unix() override = default;
  33. static vector<pair<UnixTimestamp, DateParameter>> getTestParameterList()
  34. {
  35. vector<pair<UnixTimestamp, DateParameter>> testParameterList{};
  36. testParameterList.emplace_back(656936700, DateParameter{1990, 10, 26, 11, 25, 00});
  37. testParameterList.emplace_back(612694320, DateParameter{1989, 6, 1, 10, 52, 00});
  38. return testParameterList;
  39. }
  40. };
  41. TEST_P(DateParameterMapperTest_Unix, toUnixTimestamp)
  42. {
  43. const DateParameter dateParameter = GetParam().second;
  44. const UnixTimestamp timestamp = DateParameterMapper::toUnixTimestamp(dateParameter);
  45. ASSERT_EQ(GetParam().first, timestamp);
  46. }
  47. INSTANTIATE_TEST_SUITE_P(toUnixTimestamp, DateParameterMapperTest_Unix, Values(DateParameterMapperTest_Unix::getTestParameterList().at(0), DateParameterMapperTest_Unix::getTestParameterList().at(1)));
  48. #endif
  49. #ifdef _WIN32
  50. class DateParameterMapperTest_Windows : public TestWithParam<DateParameter>
  51. {
  52. public:
  53. DateParameterMapperTest_Windows() = default;
  54. ~DateParameterMapperTest_Windows() override = default;
  55. static vector<DateParameter> getTestParameterList()
  56. {
  57. vector<DateParameter> testParameterList{};
  58. testParameterList.emplace_back(1990, 10, 26, 11, 25, 00);
  59. testParameterList.emplace_back(1989, 6, 1, 10, 52, 00);
  60. return testParameterList;
  61. }
  62. };
  63. TEST_P(DateParameterMapperTest_Windows, toWindowsSystemTime)
  64. {
  65. const DateParameter& dateParameter = GetParam();
  66. const SYSTEMTIME systemTime = DateParameterMapper::toWindowsSystemTime(dateParameter);
  67. ASSERT_EQ(systemTime.wYear, GetParam().getYear());
  68. ASSERT_EQ(systemTime.wMonth, GetParam().getMonth());
  69. ASSERT_EQ(systemTime.wDayOfWeek, 0);
  70. ASSERT_EQ(systemTime.wDay, GetParam().getDay());
  71. ASSERT_EQ(systemTime.wHour, GetParam().getHour());
  72. ASSERT_EQ(systemTime.wMinute, GetParam().getMinute());
  73. ASSERT_EQ(systemTime.wSecond, GetParam().getSecond());
  74. ASSERT_EQ(systemTime.wMilliseconds, 0);
  75. }
  76. INSTANTIATE_TEST_SUITE_P(toWindowsSystemTime, DateParameterMapperTest_Windows, Values(DateParameterMapperTest_Windows::getTestParameterList().at(0), DateParameterMapperTest_Windows::getTestParameterList().at(1)));
  77. #endif
  78. }