[libcxx-commits] [libcxx] [NFC][libc++] Refactors the time.cal tests. (PR #73356)
via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Nov 24 10:32:39 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Mark de Wever (mordante)
<details>
<summary>Changes</summary>
These tests use an old way to test code in constexpr context. This changes the code to the idomatic libc++ method.
This is a preparation for #<!-- -->73162.
Side changes
- Updated formatting
- Made some helper functions constexpr
- Some naming improvements
---
Patch is 128.14 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/73356.diff
38 Files Affected:
- (modified) libcxx/test/std/time/time.cal/euclidian.h (+14-16)
- (modified) libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/decrement.pass.cpp (+17-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/increment.pass.cpp (+18-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/plus_minus_equal.pass.cpp (+20-30)
- (modified) libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/minus.pass.cpp (+19-27)
- (modified) libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/plus.pass.cpp (+20-28)
- (modified) libcxx/test/std/time/time.cal/time.cal.month/time.cal.month.nonmembers/minus.pass.cpp (+25-35)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/c_encoding.pass.cpp (+13-18)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/decrement.pass.cpp (+18-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/increment.pass.cpp (+18-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/iso_encoding.pass.cpp (+16-20)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/plus_minus_equal.pass.cpp (+24-35)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.nonmembers/minus.pass.cpp (+25-37)
- (modified) libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.nonmembers/plus.pass.cpp (+24-31)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.members/decrement.pass.cpp (+18-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.members/increment.pass.cpp (+18-25)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.members/plus_minus.pass.cpp (+16-22)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.members/plus_minus_equal.pass.cpp (+20-30)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.nonmembers/minus.pass.cpp (+20-27)
- (modified) libcxx/test/std/time/time.cal/time.cal.year/time.cal.year.nonmembers/plus.pass.cpp (+20-28)
- (modified) libcxx/test/std/time/time.cal/time.cal.ym/time.cal.ym.members/plus_minus_equal_month.pass.cpp (+27-37)
- (modified) libcxx/test/std/time/time.cal/time.cal.ym/time.cal.ym.members/plus_minus_equal_year.pass.cpp (+27-38)
- (modified) libcxx/test/std/time/time.cal/time.cal.ym/time.cal.ym.nonmembers/minus.pass.cpp (+40-39)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymd/time.cal.ymd.members/plus_minus_equal_month.pass.cpp (+31-43)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymd/time.cal.ymd.members/plus_minus_equal_year.pass.cpp (+33-43)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymd/time.cal.ymd.nonmembers/plus.pass.cpp (+49-69)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymdlast/time.cal.ymdlast.members/plus_minus_equal_month.pass.cpp (+29-39)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymdlast/time.cal.ymdlast.members/plus_minus_equal_year.pass.cpp (+28-38)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymdlast/time.cal.ymdlast.nonmembers/minus.pass.cpp (+35-49)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymdlast/time.cal.ymdlast.nonmembers/plus.pass.cpp (+47-70)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwd/time.cal.ymwd.members/plus_minus_equal_month.pass.cpp (+45-55)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwd/time.cal.ymwd.members/plus_minus_equal_year.pass.cpp (+42-53)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwd/time.cal.ymwd.nonmembers/minus.pass.cpp (+40-65)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwd/time.cal.ymwd.nonmembers/plus.pass.cpp (+56-76)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwdlast/time.cal.ymwdlast.members/plus_minus_equal_month.pass.cpp (+43-50)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwdlast/time.cal.ymwdlast.members/plus_minus_equal_year.pass.cpp (+41-49)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwdlast/time.cal.ymwdlast.nonmembers/minus.pass.cpp (+41-59)
- (modified) libcxx/test/std/time/time.cal/time.cal.ymwdlast/time.cal.ymwdlast.nonmembers/plus.pass.cpp (+58-75)
``````````diff
diff --git a/libcxx/test/std/time/time.cal/euclidian.h b/libcxx/test/std/time/time.cal/euclidian.h
index de56477ae338def..6e841a0789a6b6c 100644
--- a/libcxx/test/std/time/time.cal/euclidian.h
+++ b/libcxx/test/std/time/time.cal/euclidian.h
@@ -12,13 +12,12 @@
// Assumption: minValue <= lhs <= maxValue
// Assumption: minValue >= 0
template <typename T, T minValue, T maxValue>
-T euclidian_addition(T rhs, T lhs)
-{
- const T modulus = maxValue - minValue + 1;
- T ret = rhs + lhs;
- if (ret > maxValue)
- ret -= modulus;
- return ret;
+constexpr T euclidian_addition(T rhs, T lhs) {
+ const T modulus = maxValue - minValue + 1;
+ T ret = rhs + lhs;
+ if (ret > maxValue)
+ ret -= modulus;
+ return ret;
}
// Assumption: minValue < maxValue
@@ -26,13 +25,12 @@ T euclidian_addition(T rhs, T lhs)
// Assumption: minValue <= lhs <= maxValue
// Assumption: minValue >= 0
template <typename T, T minValue, T maxValue>
-T euclidian_subtraction(T lhs, T rhs)
-{
- const T modulus = maxValue - minValue + 1;
- T ret = lhs - rhs;
- if (ret < minValue)
- ret += modulus;
- if (ret > maxValue) // this can happen if T is unsigned
- ret += modulus;
- return ret;
+constexpr T euclidian_subtraction(T lhs, T rhs) {
+ const T modulus = maxValue - minValue + 1;
+ T ret = lhs - rhs;
+ if (ret < minValue)
+ ret += modulus;
+ if (ret > maxValue) // this can happen if T is unsigned
+ ret += modulus;
+ return ret;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/decrement.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/decrement.pass.cpp
index fd15b98b25f7d28..9e13ab4decd7b2f 100644
--- a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/decrement.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/decrement.pass.cpp
@@ -13,41 +13,33 @@
// constexpr day& operator--() noexcept;
// constexpr day operator--(int) noexcept;
-
#include <chrono>
#include <type_traits>
#include <cassert>
#include "test_macros.h"
-template <typename D>
-constexpr bool testConstexpr()
-{
- D d1{10};
- if (static_cast<unsigned>(--d1) != 9) return false;
- if (static_cast<unsigned>(d1--) != 9) return false;
- if (static_cast<unsigned>(d1) != 8) return false;
- return true;
-}
+using day = std::chrono::day;
-int main(int, char**)
-{
- using day = std::chrono::day;
- ASSERT_NOEXCEPT(--(std::declval<day&>()) );
- ASSERT_NOEXCEPT( (std::declval<day&>())--);
+constexpr bool test() {
+ for (unsigned i = 10; i <= 20; ++i) {
+ day d(i);
+ assert(static_cast<unsigned>(--d) == i - 1);
+ assert(static_cast<unsigned>(d--) == i - 1);
+ assert(static_cast<unsigned>(d) == i - 2);
+ }
+ return true;
+}
- ASSERT_SAME_TYPE(day , decltype( std::declval<day&>()--));
- ASSERT_SAME_TYPE(day&, decltype(--std::declval<day&>() ));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(--(std::declval<day&>()));
+ ASSERT_NOEXCEPT((std::declval<day&>())--);
- static_assert(testConstexpr<day>(), "");
+ ASSERT_SAME_TYPE(day, decltype(std::declval<day&>()--));
+ ASSERT_SAME_TYPE(day&, decltype(--std::declval<day&>()));
- for (unsigned i = 10; i <= 20; ++i)
- {
- day d(i);
- assert(static_cast<unsigned>(--d) == i - 1);
- assert(static_cast<unsigned>(d--) == i - 1);
- assert(static_cast<unsigned>(d) == i - 2);
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/increment.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/increment.pass.cpp
index f11021b35f4dc37..3d67558950535c1 100644
--- a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/increment.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/increment.pass.cpp
@@ -13,41 +13,34 @@
// constexpr day& operator++() noexcept;
// constexpr day operator++(int) noexcept;
-
#include <chrono>
#include <type_traits>
#include <cassert>
#include "test_macros.h"
-template <typename D>
-constexpr bool testConstexpr()
-{
- D d1{1};
- if (static_cast<unsigned>(++d1) != 2) return false;
- if (static_cast<unsigned>(d1++) != 2) return false;
- if (static_cast<unsigned>(d1) != 3) return false;
- return true;
-}
+using day = std::chrono::day;
-int main(int, char**)
-{
- using day = std::chrono::day;
- ASSERT_NOEXCEPT(++(std::declval<day&>()) );
- ASSERT_NOEXCEPT( (std::declval<day&>())++);
+constexpr bool test() {
+ for (unsigned i = 10; i <= 20; ++i) {
+ day d(i);
+ assert(static_cast<unsigned>(++d) == i + 1);
+ assert(static_cast<unsigned>(d++) == i + 1);
+ assert(static_cast<unsigned>(d) == i + 2);
+ }
+
+ return true;
+}
- ASSERT_SAME_TYPE(day , decltype( std::declval<day&>()++));
- ASSERT_SAME_TYPE(day&, decltype(++std::declval<day&>() ));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(++(std::declval<day&>()));
+ ASSERT_NOEXCEPT((std::declval<day&>())++);
- static_assert(testConstexpr<day>(), "");
+ ASSERT_SAME_TYPE(day, decltype(std::declval<day&>()++));
+ ASSERT_SAME_TYPE(day&, decltype(++std::declval<day&>()));
- for (unsigned i = 10; i <= 20; ++i)
- {
- day d(i);
- assert(static_cast<unsigned>(++d) == i + 1);
- assert(static_cast<unsigned>(d++) == i + 1);
- assert(static_cast<unsigned>(d) == i + 2);
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/plus_minus_equal.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/plus_minus_equal.pass.cpp
index 723ab2af14d1c71..28a1529beb74379 100644
--- a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/plus_minus_equal.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.members/plus_minus_equal.pass.cpp
@@ -19,40 +19,30 @@
#include "test_macros.h"
-template <typename D, typename Ds>
-constexpr bool testConstexpr()
-{
- D d1{1};
- if (static_cast<unsigned>(d1 += Ds{ 1}) != 2) return false;
- if (static_cast<unsigned>(d1 += Ds{ 2}) != 4) return false;
- if (static_cast<unsigned>(d1 += Ds{22}) != 26) return false;
- if (static_cast<unsigned>(d1 -= Ds{ 1}) != 25) return false;
- if (static_cast<unsigned>(d1 -= Ds{ 2}) != 23) return false;
- if (static_cast<unsigned>(d1 -= Ds{22}) != 1) return false;
- return true;
+using day = std::chrono::day;
+using days = std::chrono::days;
+
+constexpr bool test() {
+ for (unsigned i = 0; i <= 10; ++i) {
+ day d(i);
+ assert(static_cast<unsigned>(d += days{22}) == i + 22);
+ assert(static_cast<unsigned>(d) == i + 22);
+ assert(static_cast<unsigned>(d -= days{12}) == i + 10);
+ assert(static_cast<unsigned>(d) == i + 10);
+ }
+
+ return true;
}
-int main(int, char**)
-{
- using day = std::chrono::day;
- using days = std::chrono::days;
+int main(int, char**) {
+ ASSERT_NOEXCEPT(std::declval<day&>() += std::declval<days>());
+ ASSERT_NOEXCEPT(std::declval<day&>() -= std::declval<days>());
- ASSERT_NOEXCEPT(std::declval<day&>() += std::declval<days>());
- ASSERT_NOEXCEPT(std::declval<day&>() -= std::declval<days>());
+ ASSERT_SAME_TYPE(day&, decltype(std::declval<day&>() += std::declval<days>()));
+ ASSERT_SAME_TYPE(day&, decltype(std::declval<day&>() -= std::declval<days>()));
- ASSERT_SAME_TYPE(day&, decltype(std::declval<day&>() += std::declval<days>()));
- ASSERT_SAME_TYPE(day&, decltype(std::declval<day&>() -= std::declval<days>()));
-
- static_assert(testConstexpr<day, days>(), "");
-
- for (unsigned i = 0; i <= 10; ++i)
- {
- day d(i);
- assert(static_cast<unsigned>(d += days{22}) == i + 22);
- assert(static_cast<unsigned>(d) == i + 22);
- assert(static_cast<unsigned>(d -= days{12}) == i + 10);
- assert(static_cast<unsigned>(d) == i + 10);
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/minus.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/minus.pass.cpp
index 34b59f8e1c7c017..f2d29f7050e7301 100644
--- a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/minus.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/minus.pass.cpp
@@ -16,44 +16,36 @@
// constexpr days operator-(const day& x, const day& y) noexcept;
// Returns: days{int(unsigned{x}) - int(unsigned{y}).
-
#include <chrono>
#include <type_traits>
#include <cassert>
#include "test_macros.h"
-template <typename D, typename Ds>
-constexpr bool testConstexpr()
-{
- D d{23};
- Ds offset{6};
- if (d - offset != D{17}) return false;
- if (d - D{17} != offset) return false;
- return true;
-}
+using day = std::chrono::day;
+using days = std::chrono::days;
-int main(int, char**)
-{
- using day = std::chrono::day;
- using days = std::chrono::days;
+constexpr bool test() {
+ day dy{12};
+ for (unsigned i = 0; i <= 10; ++i) {
+ day d1 = dy - days{i};
+ days off = dy - day{i};
+ assert(static_cast<unsigned>(d1) == 12 - i);
+ assert(off.count() == static_cast<int>(12 - i)); // days is signed
+ }
- ASSERT_NOEXCEPT(std::declval<day>() - std::declval<days>());
- ASSERT_NOEXCEPT(std::declval<day>() - std::declval<day>());
+ return true;
+}
- ASSERT_SAME_TYPE(day, decltype(std::declval<day>() - std::declval<days>()));
- ASSERT_SAME_TYPE(days, decltype(std::declval<day>() - std::declval<day>()));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(std::declval<day>() - std::declval<days>());
+ ASSERT_NOEXCEPT(std::declval<day>() - std::declval<day>());
- static_assert(testConstexpr<day, days>(), "");
+ ASSERT_SAME_TYPE(day, decltype(std::declval<day>() - std::declval<days>()));
+ ASSERT_SAME_TYPE(days, decltype(std::declval<day>() - std::declval<day>()));
- day dy{12};
- for (unsigned i = 0; i <= 10; ++i)
- {
- day d1 = dy - days{i};
- days off = dy - day {i};
- assert(static_cast<unsigned>(d1) == 12 - i);
- assert(off.count() == static_cast<int>(12 - i)); // days is signed
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/plus.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/plus.pass.cpp
index fedf9efe6db47e0..dd6e537ec5d3911 100644
--- a/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/plus.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/plus.pass.cpp
@@ -16,45 +16,37 @@
// constexpr day operator+(const days& x, const day& y) noexcept;
// Returns: y + x.
-
#include <chrono>
#include <type_traits>
#include <cassert>
#include "test_macros.h"
-template <typename D, typename Ds>
-constexpr bool testConstexpr()
-{
- D d{1};
- Ds offset{23};
- if (d + offset != D{24}) return false;
- if (offset + d != D{24}) return false;
- return true;
-}
+using day = std::chrono::day;
+using days = std::chrono::days;
-int main(int, char**)
-{
- using day = std::chrono::day;
- using days = std::chrono::days;
+constexpr bool test() {
+ day dy{12};
+ for (unsigned i = 0; i <= 10; ++i) {
+ day d1 = dy + days{i};
+ day d2 = days{i} + dy;
+ assert(d1 == d2);
+ assert(static_cast<unsigned>(d1) == i + 12);
+ assert(static_cast<unsigned>(d2) == i + 12);
+ }
- ASSERT_NOEXCEPT(std::declval<day>() + std::declval<days>());
- ASSERT_NOEXCEPT(std::declval<days>() + std::declval<day>());
+ return true;
+}
- ASSERT_SAME_TYPE(day, decltype(std::declval<day>() + std::declval<days>()));
- ASSERT_SAME_TYPE(day, decltype(std::declval<days>() + std::declval<day>()));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(std::declval<day>() + std::declval<days>());
+ ASSERT_NOEXCEPT(std::declval<days>() + std::declval<day>());
- static_assert(testConstexpr<day, days>(), "");
+ ASSERT_SAME_TYPE(day, decltype(std::declval<day>() + std::declval<days>()));
+ ASSERT_SAME_TYPE(day, decltype(std::declval<days>() + std::declval<day>()));
- day dy{12};
- for (unsigned i = 0; i <= 10; ++i)
- {
- day d1 = dy + days{i};
- day d2 = days{i} + dy;
- assert(d1 == d2);
- assert(static_cast<unsigned>(d1) == i + 12);
- assert(static_cast<unsigned>(d2) == i + 12);
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.month/time.cal.month.nonmembers/minus.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.month/time.cal.month.nonmembers/minus.pass.cpp
index 2041afca5414b43..f7fb2b19ba60f23 100644
--- a/libcxx/test/std/time/time.cal/time.cal.month/time.cal.month.nonmembers/minus.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.month/time.cal.month.nonmembers/minus.pass.cpp
@@ -25,45 +25,35 @@
#include "test_macros.h"
-template <typename M, typename Ms>
-constexpr bool testConstexpr()
-{
- {
- M m{5};
- Ms offset{3};
- assert(m - offset == M{2});
- assert(m - M{2} == offset);
- }
-
- // Check the example
- assert(M{1} - M{2} == Ms{11});
-
- return true;
+using month = std::chrono::month;
+using months = std::chrono::months;
+
+constexpr bool test() {
+ month m{6};
+ for (unsigned i = 1; i <= 12; ++i) {
+ month m1 = m - months{i};
+ assert(m1.ok());
+ int exp = 6 - i;
+ if (exp < 1)
+ exp += 12;
+ assert(static_cast<unsigned>(m1) == static_cast<unsigned>(exp));
+ }
+
+ // Check the example
+ assert(month{1} - month{2} == months{11});
+
+ return true;
}
-int main(int, char**)
-{
- using month = std::chrono::month;
- using months = std::chrono::months;
-
- ASSERT_NOEXCEPT(std::declval<month>() - std::declval<months>());
- ASSERT_NOEXCEPT(std::declval<month>() - std::declval<month>());
-
- ASSERT_SAME_TYPE(month , decltype(std::declval<month>() - std::declval<months>()));
- ASSERT_SAME_TYPE(months, decltype(std::declval<month>() - std::declval<month> ()));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(std::declval<month>() - std::declval<months>());
+ ASSERT_NOEXCEPT(std::declval<month>() - std::declval<month>());
- static_assert(testConstexpr<month, months>(), "");
+ ASSERT_SAME_TYPE(month, decltype(std::declval<month>() - std::declval<months>()));
+ ASSERT_SAME_TYPE(months, decltype(std::declval<month>() - std::declval<month>()));
- month m{6};
- for (unsigned i = 1; i <= 12; ++i)
- {
- month m1 = m - months{i};
- assert(m1.ok());
- int exp = 6 - i;
- if (exp < 1)
- exp += 12;
- assert(static_cast<unsigned>(m1) == static_cast<unsigned>(exp));
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/c_encoding.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/c_encoding.pass.cpp
index 6eb80638765b705..e80b449f9bc4498 100644
--- a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/c_encoding.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/c_encoding.pass.cpp
@@ -12,34 +12,29 @@
// constexpr unsigned c_encoding() const noexcept;
-
#include <chrono>
#include <type_traits>
#include <cassert>
#include "test_macros.h"
-template <typename WD>
-constexpr bool testConstexpr()
-{
- WD wd{5};
- return wd.c_encoding() == 5;
-}
+using weekday = std::chrono::weekday;
-int main(int, char**)
-{
- using weekday = std::chrono::weekday;
+constexpr bool test() {
+ for (unsigned i = 0; i <= 10; ++i) {
+ weekday wd(i);
+ assert(wd.c_encoding() == (i == 7 ? 0 : i));
+ }
- ASSERT_NOEXCEPT( std::declval<weekday&>().c_encoding());
- ASSERT_SAME_TYPE(unsigned, decltype(std::declval<weekday&>().c_encoding()));
+ return true;
+}
- static_assert(testConstexpr<weekday>(), "");
+int main(int, char**) {
+ ASSERT_NOEXCEPT(std::declval<weekday&>().c_encoding());
+ ASSERT_SAME_TYPE(unsigned, decltype(std::declval<weekday&>().c_encoding()));
- for (unsigned i = 0; i <= 10; ++i)
- {
- weekday wd(i);
- assert(wd.c_encoding() == (i == 7 ? 0 : i));
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/decrement.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/decrement.pass.cpp
index f24da11d4c4699e..16ed968c3b9dc22 100644
--- a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/decrement.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/decrement.pass.cpp
@@ -13,7 +13,6 @@
// constexpr weekday& operator--() noexcept;
// constexpr weekday operator--(int) noexcept;
-
#include <chrono>
#include <type_traits>
#include <cassert>
@@ -21,34 +20,28 @@
#include "test_macros.h"
#include "../../euclidian.h"
-template <typename WD>
-constexpr bool testConstexpr()
-{
- WD wd{1};
- if ((--wd).c_encoding() != 0) return false;
- if ((wd--).c_encoding() != 0) return false;
- if ((wd).c_encoding() != 6) return false;
- return true;
-}
+using weekday = std::chrono::weekday;
-int main(int, char**)
-{
- using weekday = std::chrono::weekday;
- ASSERT_NOEXCEPT(--(std::declval<weekday&>()) );
- ASSERT_NOEXCEPT( (std::declval<weekday&>())--);
+constexpr bool test() {
+ for (unsigned i = 0; i <= 6; ++i) {
+ weekday wd(i);
+ assert(((--wd).c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 1)));
+ assert(((wd--).c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 1)));
+ assert(((wd).c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 2)));
+ }
+
+ return true;
+}
- ASSERT_SAME_TYPE(weekday , decltype( std::declval<weekday&>()--));
- ASSERT_SAME_TYPE(weekday&, decltype(--std::declval<weekday&>() ));
+int main(int, char**) {
+ ASSERT_NOEXCEPT(--(std::declval<weekday&>()));
+ ASSERT_NOEXCEPT((std::declval<weekday&>())--);
- static_assert(testConstexpr<weekday>(), "");
+ ASSERT_SAME_TYPE(weekday, decltype(std::declval<weekday&>()--));
+ ASSERT_SAME_TYPE(weekday&, decltype(--std::declval<weekday&>()));
- for (unsigned i = 0; i <= 6; ++i)
- {
- weekday wd(i);
- assert(((--wd).c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 1)));
- assert(((wd--).c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 1)));
- assert(((wd) .c_encoding() == euclidian_subtraction<unsigned, 0, 6>(i, 2)));
- }
+ test();
+ static_assert(test());
return 0;
}
diff --git a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/increment.pass.cpp b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/increment.pass.cpp
index 3da4b866b594b33..6c3ad9b21f45df0 100644
--- a/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/increment.pass.cpp
+++ b/libcxx/test/std/time/time.cal/time.cal.weekday/time.cal.weekday.members/increment.pass.cpp
@@ -13,7 +13,6 @@
// constexpr weekday& operator++() noexcept;
// constexpr weekday operator++(int) noexcept;
-
#include <chrono>
#include <type_traits>
#include <cassert>
@@ -21,34 +20,28 @@
#include "test_macros.h"
#include "../../euclidian.h"
-template <typename WD>
-constexpr bool testConstexpr()
-{
- WD wd{5};
- if ((++wd).c_encoding() != 6) return false;
- if ((wd++).c_encoding() != 6) return false;
- if ((wd) .c_encoding() != 0) return false;
- return true;
-}
+using weekday = std::chrono::weekday;
-int main(int, char**)
-{
- using weekday = std::chrono::weekday;
- ASSERT_NOEXCEPT(++(std::declval<weekday&>()) );
- ASSERT_NOEXCEPT( (std::declval<weekday&>())++);
+constexpr bool test() {
+ for (unsigned i = 0; i <= 6; ++i) {
+ weekday wd(i);
+ assert(((++wd).c_encoding() == euclidian_addition<unsigned, 0, 6>(i, 1)));
+ assert(((wd++).c_encoding() == euclidian_addition<unsigned, 0, 6>(i, 1)));
+ assert(((wd).c_encoding() == euclidian_addition<unsigned, 0, 6>(i, 2)));
+ }
+
+ return true;
+}
- ASSERT_SAME_TYPE(weekda...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/73356
More information about the libcxx-commits
mailing list