TestTimeZone.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibTest/TestCase.h>
  7. #include <AK/StringView.h>
  8. #include <LibCore/Environment.h>
  9. #include <LibUnicode/TimeZone.h>
  10. class TimeZoneGuard {
  11. public:
  12. explicit TimeZoneGuard(StringView time_zone)
  13. : m_time_zone(Core::Environment::get("TZ"sv))
  14. {
  15. MUST(Core::Environment::set("TZ"sv, time_zone, Core::Environment::Overwrite::Yes));
  16. }
  17. ~TimeZoneGuard()
  18. {
  19. if (m_time_zone.has_value())
  20. MUST(Core::Environment::set("TZ"sv, *m_time_zone, Core::Environment::Overwrite::Yes));
  21. else
  22. MUST(Core::Environment::unset("TZ"sv));
  23. }
  24. private:
  25. Optional<StringView> m_time_zone;
  26. };
  27. TEST_CASE(current_time_zone)
  28. {
  29. {
  30. TimeZoneGuard guard { "America/New_York"sv };
  31. EXPECT_EQ(Unicode::current_time_zone(), "America/New_York"sv);
  32. }
  33. {
  34. TimeZoneGuard guard { "ladybird"sv };
  35. EXPECT_EQ(Unicode::current_time_zone(), "UTC"sv);
  36. }
  37. }