Skip to content

Commit 12a38fb

Browse files
apply suggestions to test file
1 parent bd7ca12 commit 12a38fb

File tree

1 file changed

+68
-66
lines changed

1 file changed

+68
-66
lines changed

libcxx/test/std/time/time.traits.is.clock/trait.is.clock.compile.pass.cpp

Lines changed: 68 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include <chrono>
1212
#include <ratio>
1313

14+
#include "test_macros.h"
15+
1416
struct EmptyStruct {};
1517

1618
// Test structs missing required members
@@ -168,75 +170,75 @@ struct ValidClockWithDurationMatch {
168170
static time_point now();
169171
};
170172

171-
int main(int, char**) {
172-
// Test both is_clock and is_clock_v
173-
static_assert(std::chrono::is_clock<std::chrono::system_clock>::value);
174-
static_assert(std::chrono::is_clock_v<std::chrono::system_clock>);
173+
// Test both is_clock and is_clock_v
174+
static_assert(std::chrono::is_clock<std::chrono::system_clock>::value);
175+
static_assert(std::chrono::is_clock_v<std::chrono::system_clock>);
175176

176-
// Test standard clock types
177-
static_assert(std::chrono::is_clock_v<std::chrono::system_clock>);
177+
// Test standard clock types
178+
static_assert(std::chrono::is_clock_v<std::chrono::system_clock>);
178179
#ifdef _LIBCPP_HAS_MONOTONIC_CLOCK
179-
static_assert(std::chrono::is_clock_v<std::chrono::steady_clock>);
180+
static_assert(std::chrono::is_clock_v<std::chrono::steady_clock>);
180181
#endif
181-
static_assert(std::chrono::is_clock_v<std::chrono::high_resolution_clock>);
182+
static_assert(std::chrono::is_clock_v<std::chrono::high_resolution_clock>);
182183

183-
// Test non-clock types
184-
static_assert(!std::chrono::is_clock_v<EmptyStruct>);
185-
static_assert(!std::chrono::is_clock_v<int>);
186-
static_assert(!std::chrono::is_clock_v<void>);
187-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock::time_point>);
184+
// Test non-clock types
185+
static_assert(!std::chrono::is_clock_v<EmptyStruct>);
186+
static_assert(!std::chrono::is_clock_v<int>);
187+
static_assert(!std::chrono::is_clock_v<void>);
188+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock::time_point>);
188189
#ifdef _LIBCPP_HAS_MONOTONIC_CLOCK
189-
static_assert(!std::chrono::is_clock_v<std::chrono::steady_clock::time_point>);
190+
static_assert(!std::chrono::is_clock_v<std::chrono::steady_clock::time_point>);
190191
#endif
191-
static_assert(!std::chrono::is_clock_v<std::chrono::seconds>);
192-
static_assert(!std::chrono::is_clock_v<std::chrono::milliseconds>);
193-
194-
// Test structs missing required members
195-
static_assert(!std::chrono::is_clock_v<MissingRep>);
196-
static_assert(!std::chrono::is_clock_v<MissingPeriod>);
197-
static_assert(!std::chrono::is_clock_v<MissingDuration>);
198-
static_assert(!std::chrono::is_clock_v<MissingTimePoint>);
199-
static_assert(!std::chrono::is_clock_v<MissingIsSteady>);
200-
static_assert(!std::chrono::is_clock_v<MissingNow>);
201-
202-
// Test valid custom clocks
203-
static_assert(std::chrono::is_clock_v<ValidSteadyClock>);
204-
static_assert(std::chrono::is_clock_v<ValidSystemClock>);
205-
static_assert(std::chrono::is_clock_v<ValidClockWithDurationMatch>);
206-
207-
// Test clocks with invalid is_steady type
208-
static_assert(!std::chrono::is_clock_v<WrongIsSteadyType>); // is_steady not const bool
209-
static_assert(!std::chrono::is_clock_v<WrongIsSteadyNonBool>); // is_steady not bool type
210-
211-
// Test clocks with invalid now() return type
212-
static_assert(!std::chrono::is_clock_v<WrongNowReturnType>); // now() doesn't return time_point
213-
214-
// Test clocks with invalid period type
215-
static_assert(!std::chrono::is_clock_v<WrongPeriodType>); // period is not a ratio
216-
217-
// Test clocks with invalid rep type
218-
static_assert(!std::chrono::is_clock_v<InvalidRepType>); // rep is not arithmetic and no numeric_limits
219-
220-
// Test clocks with wrong duration type
221-
static_assert(!std::chrono::is_clock_v<WrongDurationType>); // duration doesn't match duration<rep, period>
222-
223-
// Test clocks with wrong time_point type
224-
static_assert(!std::chrono::is_clock_v<WrongTimePointType>); // time_point is not a time_point
225-
static_assert(!std::chrono::is_clock_v<WrongTimePointClock>); // time_point has wrong clock and wrong duration
226-
227-
// cv-qualified and reference types
228-
static_assert(std::chrono::is_clock_v<const std::chrono::system_clock>);
229-
static_assert(std::chrono::is_clock_v<volatile std::chrono::system_clock>);
230-
static_assert(std::chrono::is_clock_v<const volatile std::chrono::system_clock>);
231-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock&>);
232-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock&&>);
233-
static_assert(!std::chrono::is_clock_v<const std::chrono::system_clock&>);
234-
235-
// array and pointer types
236-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock[]>);
237-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock[10]>);
238-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock*>);
239-
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock* const>);
240-
241-
return 0;
242-
}
192+
static_assert(!std::chrono::is_clock_v<std::chrono::seconds>);
193+
static_assert(!std::chrono::is_clock_v<std::chrono::milliseconds>);
194+
195+
// Test structs missing required members
196+
static_assert(!std::chrono::is_clock_v<MissingRep>);
197+
static_assert(!std::chrono::is_clock_v<MissingPeriod>);
198+
static_assert(!std::chrono::is_clock_v<MissingDuration>);
199+
static_assert(!std::chrono::is_clock_v<MissingTimePoint>);
200+
static_assert(!std::chrono::is_clock_v<MissingIsSteady>);
201+
static_assert(!std::chrono::is_clock_v<MissingNow>);
202+
203+
// Test valid custom clocks
204+
static_assert(std::chrono::is_clock_v<ValidSteadyClock>);
205+
static_assert(std::chrono::is_clock_v<ValidSystemClock>);
206+
static_assert(std::chrono::is_clock_v<ValidClockWithDurationMatch>);
207+
208+
// cv-qualified and reference types
209+
static_assert(std::chrono::is_clock_v<const std::chrono::system_clock>);
210+
static_assert(std::chrono::is_clock_v<volatile std::chrono::system_clock>);
211+
static_assert(std::chrono::is_clock_v<const volatile std::chrono::system_clock>);
212+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock&>);
213+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock&&>);
214+
static_assert(!std::chrono::is_clock_v<const std::chrono::system_clock&>);
215+
216+
// array and pointer types
217+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock[]>);
218+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock[10]>);
219+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock*>);
220+
static_assert(!std::chrono::is_clock_v<std::chrono::system_clock* const>);
221+
222+
// The Standard defined a minimum set of checks and allowed implementation to perform stricter checks. The following
223+
// static asserts are implementation specific and a conforming standard library implementation doesn't have to produce
224+
// the same outcome.
225+
226+
// Test clocks with invalid is_steady type
227+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongIsSteadyType>); // is_steady not const bool
228+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongIsSteadyNonBool>); // is_steady not bool type
229+
230+
// Test clocks with invalid now() return type
231+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongNowReturnType>); // now() doesn't return time_point
232+
233+
// Test clocks with invalid period type
234+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongPeriodType>); // period is not a ratio
235+
236+
// Test clocks with invalid rep type
237+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<InvalidRepType>); // rep is not arithmetic and no numeric_limits
238+
239+
// Test clocks with wrong duration type
240+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongDurationType>); // duration doesn't match duration<rep, period>
241+
242+
// Test clocks with wrong time_point type
243+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongTimePointType>); // time_point is not a time_point
244+
LIBCPP_STATIC_ASSERT(!std::chrono::is_clock_v<WrongTimePointClock>); // time_point has wrong clock and wrong duration

0 commit comments

Comments
 (0)