DateParameterMapperTest.cpp 3.0 KB

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