Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(884)

Unified Diff: base/time/time_unittest.cc

Issue 178103004: Removing the use of base::Time inside the LayerTreeHost system. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changing to a common ToWebKitTime function. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/time/time_unittest.cc
diff --git a/base/time/time_unittest.cc b/base/time/time_unittest.cc
index e78a61cf4bdcd1bb2fa8fe96d2ad171877944821..6cfe787c674c30aa7f06cb42c949c13a3298d361 100644
--- a/base/time/time_unittest.cc
+++ b/base/time/time_unittest.cc
@@ -4,6 +4,8 @@
#include "base/time/time.h"
+#include <cmath>
+
#include <time.h>
#include "base/compiler_specific.h"
@@ -660,6 +662,47 @@ TEST(TimeTicks, NowFromSystemTraceTime) {
HighResClockTest(&TimeTicks::NowFromSystemTraceTime);
}
+TEST(TimeTicks, WebKitConversion) {
+ double double_null = 0;
+ double double_max = std::numeric_limits<double>::max();
+ double double_min = std::numeric_limits<double>::lowest();
+ double double_positive_inf = std::numeric_limits<double>::infinity();
+ double double_negative_inf = -std::numeric_limits<double>::infinity();
+
+ TimeTicks ticks_null = TimeTicks();
+ TimeTicks ticks_min =
+ TimeTicks::FromInternalValue(std::numeric_limits<int64>::min());
+ TimeTicks ticks_max =
+ TimeTicks::FromInternalValue(std::numeric_limits<int64>::max());
+
+ EXPECT_EQ(ticks_null, TimeTicks::FromWebKit(double_null));
+ EXPECT_EQ(ticks_max, TimeTicks::FromWebKit(double_max));
+ EXPECT_EQ(ticks_min, TimeTicks::FromWebKit(double_min));
+ EXPECT_EQ(ticks_max, TimeTicks::FromWebKit(double_positive_inf));
+ EXPECT_EQ(ticks_min, TimeTicks::FromWebKit(double_negative_inf));
+
+ EXPECT_EQ(double_null, ticks_null.ToWebKit());
+ EXPECT_EQ(double_negative_inf, ticks_min.ToWebKit());
+ EXPECT_EQ(double_positive_inf, ticks_max.ToWebKit());
+
+ // Round trip some values
+ // Outside of 2**53 the int64->double->int64 round trip isn't exact.
+ for (int i = -53; i < 53; i++) {
+ if (!i)
+ continue;
+
+ SCOPED_TRACE(i);
+ double i_abs = abs(static_cast<double>(i));
+
+ TimeTicks ticks_value = TimeTicks::FromInternalValue(
+ static_cast<int64>((i / i_abs) * pow(2.0, i_abs)));
+ EXPECT_EQ(TimeTicks::FromWebKit(ticks_value.ToWebKit()), ticks_value);
+
+ double double_value = (i / i_abs) * pow(2.0, i_abs) / 1e6;
+ EXPECT_EQ(TimeTicks::FromWebKit(double_value).ToWebKit(), double_value);
+ }
+}
+
TEST(TimeDelta, FromAndIn) {
EXPECT_TRUE(TimeDelta::FromDays(2) == TimeDelta::FromHours(48));
EXPECT_TRUE(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180));

Powered by Google App Engine
This is Rietveld 408576698