8 #include <mach/mach_time.h>
19 #include "testing/gtest/include/gtest/gtest.h"
24 TEST(TimeDelta, FromAndIn) {
25 EXPECT_EQ(TimeDelta::FromDays(2), TimeDelta::FromHours(48));
26 EXPECT_EQ(TimeDelta::FromHours(3), TimeDelta::FromMinutes(180));
27 EXPECT_EQ(TimeDelta::FromMinutes(2), TimeDelta::FromSeconds(120));
28 EXPECT_EQ(TimeDelta::FromSeconds(2), TimeDelta::FromMilliseconds(2000));
29 EXPECT_EQ(TimeDelta::FromMilliseconds(2), TimeDelta::FromMicroseconds(2000));
30 EXPECT_EQ(
static_cast<int>(13), TimeDelta::FromDays(13).InDays());
31 EXPECT_EQ(
static_cast<int>(13), TimeDelta::FromHours(13).InHours());
32 EXPECT_EQ(
static_cast<int>(13), TimeDelta::FromMinutes(13).InMinutes());
33 EXPECT_EQ(
static_cast<int64_t
>(13), TimeDelta::FromSeconds(13).InSeconds());
34 EXPECT_DOUBLE_EQ(13.0, TimeDelta::FromSeconds(13).InSecondsF());
35 EXPECT_EQ(
static_cast<int64_t
>(13),
36 TimeDelta::FromMilliseconds(13).InMilliseconds());
37 EXPECT_DOUBLE_EQ(13.0, TimeDelta::FromMilliseconds(13).InMillisecondsF());
38 EXPECT_EQ(
static_cast<int64_t
>(13),
39 TimeDelta::FromMicroseconds(13).InMicroseconds());
44 TEST(TimeDelta, MachTimespec) {
45 TimeDelta
null = TimeDelta();
46 EXPECT_EQ(
null, TimeDelta::FromMachTimespec(
null.ToMachTimespec()));
47 TimeDelta delta1 = TimeDelta::FromMilliseconds(42);
48 EXPECT_EQ(delta1, TimeDelta::FromMachTimespec(delta1.ToMachTimespec()));
49 TimeDelta delta2 = TimeDelta::FromDays(42);
50 EXPECT_EQ(delta2, TimeDelta::FromMachTimespec(delta2.ToMachTimespec()));
56 Time t = Time::FromJsTime(700000.3);
57 EXPECT_DOUBLE_EQ(700000.3, t.ToJsTime());
62 TEST(Time, Timespec) {
64 EXPECT_TRUE(
null.IsNull());
65 EXPECT_EQ(
null, Time::FromTimespec(
null.ToTimespec()));
66 Time now = Time::Now();
67 EXPECT_EQ(now, Time::FromTimespec(now.ToTimespec()));
68 Time now_sys = Time::NowFromSystemTime();
69 EXPECT_EQ(now_sys, Time::FromTimespec(now_sys.ToTimespec()));
70 Time unix_epoch = Time::UnixEpoch();
71 EXPECT_EQ(unix_epoch, Time::FromTimespec(unix_epoch.ToTimespec()));
73 EXPECT_TRUE(max.IsMax());
74 EXPECT_EQ(max, Time::FromTimespec(max.ToTimespec()));
80 EXPECT_TRUE(
null.IsNull());
81 EXPECT_EQ(
null, Time::FromTimeval(
null.ToTimeval()));
82 Time now = Time::Now();
83 EXPECT_EQ(now, Time::FromTimeval(now.ToTimeval()));
84 Time now_sys = Time::NowFromSystemTime();
85 EXPECT_EQ(now_sys, Time::FromTimeval(now_sys.ToTimeval()));
86 Time unix_epoch = Time::UnixEpoch();
87 EXPECT_EQ(unix_epoch, Time::FromTimeval(unix_epoch.ToTimeval()));
89 EXPECT_TRUE(max.IsMax());
90 EXPECT_EQ(max, Time::FromTimeval(max.ToTimeval()));
96 TEST(Time, Filetime) {
98 EXPECT_TRUE(
null.IsNull());
99 EXPECT_EQ(
null, Time::FromFiletime(
null.ToFiletime()));
100 Time now = Time::Now();
101 EXPECT_EQ(now, Time::FromFiletime(now.ToFiletime()));
102 Time now_sys = Time::NowFromSystemTime();
103 EXPECT_EQ(now_sys, Time::FromFiletime(now_sys.ToFiletime()));
104 Time unix_epoch = Time::UnixEpoch();
105 EXPECT_EQ(unix_epoch, Time::FromFiletime(unix_epoch.ToFiletime()));
107 EXPECT_TRUE(max.IsMax());
108 EXPECT_EQ(max, Time::FromFiletime(max.ToFiletime()));
115 template <
typename T>
123 static const TimeDelta kExpirationTimeout = TimeDelta::FromSeconds(1);
136 }
while (now <= start);
137 EXPECT_NE(
static_cast<int64_t
>(0), delta.InMicroseconds());
138 }
while (delta > target_granularity && !timer.HasExpired(kExpirationTimeout));
139 EXPECT_LE(delta, target_granularity);
147 static const TimeDelta kTargetGranularity = TimeDelta::FromMilliseconds(16);
148 ResolutionTest<Time>(&Time::Now, kTargetGranularity);
152 TEST(TimeTicks, NowResolution) {
154 static const TimeDelta kTargetGranularity = TimeDelta::FromMilliseconds(16);
155 ResolutionTest<TimeTicks>(&TimeTicks::Now, kTargetGranularity);
159 TEST(TimeTicks, HighResolutionNowResolution) {
160 if (!TimeTicks::IsHighResolutionClockWorking())
return;
163 static const TimeDelta kTargetGranularity = TimeDelta::FromMilliseconds(1);
164 ResolutionTest<TimeTicks>(&TimeTicks::HighResolutionNow, kTargetGranularity);
169 TimeTicks previous_normal_ticks;
170 TimeTicks previous_highres_ticks;
173 while (!timer.HasExpired(TimeDelta::FromMilliseconds(100))) {
174 TimeTicks normal_ticks = TimeTicks::Now();
175 TimeTicks highres_ticks = TimeTicks::HighResolutionNow();
176 EXPECT_GE(normal_ticks, previous_normal_ticks);
177 EXPECT_GE((normal_ticks - previous_normal_ticks).InMicroseconds(), 0);
178 EXPECT_GE(highres_ticks, previous_highres_ticks);
179 EXPECT_GE((highres_ticks - previous_highres_ticks).InMicroseconds(), 0);
180 previous_normal_ticks = normal_ticks;
181 previous_highres_ticks = highres_ticks;
static void ResolutionTest(T(*Now)(), TimeDelta target_granularity)
TEST(CPUTest, FeatureImplications)
static LifetimePosition Max(LifetimePosition a, LifetimePosition b)
Debugger support for the V8 JavaScript engine.
#define T(name, string, precedence)