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

Side by Side Diff: webkit/renderer/compositor_bindings/webkit_time_unittest.cc

Issue 192433002: Creating utility for converting TimeTicks to WebKit double and use it in the Chrome compositor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "webkit/renderer/compositor_bindings/webkit_time.h"
6
7 #include <cmath>
8 #include <limits>
9
10 #include "base/time/time.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 using base::TimeTicks;
14
15 TEST(WebKitTime, Conversion) {
16 double double_null = 0;
17 double double_max = std::numeric_limits<double>::max();
18 double double_min = std::numeric_limits<double>::lowest();
19 double double_positive_inf = std::numeric_limits<double>::infinity();
20 double double_negative_inf = -std::numeric_limits<double>::infinity();
21
22 base::TimeTicks ticks_null = base::TimeTicks();
23 base::TimeTicks ticks_min =
24 base::TimeTicks::FromInternalValue(std::numeric_limits<int64>::min());
25 base::TimeTicks ticks_max =
26 base::TimeTicks::FromInternalValue(std::numeric_limits<int64>::max());
27
28 EXPECT_EQ(ticks_null, webkit::FromWebKitTime(double_null));
29 EXPECT_EQ(ticks_max, webkit::FromWebKitTime(double_max));
30 EXPECT_EQ(ticks_min, webkit::FromWebKitTime(double_min));
31 EXPECT_EQ(ticks_max, webkit::FromWebKitTime(double_positive_inf));
32 EXPECT_EQ(ticks_min, webkit::FromWebKitTime(double_negative_inf));
33
34 EXPECT_EQ(double_null, webkit::ToWebKitTime(ticks_null));
35 EXPECT_EQ(double_negative_inf, webkit::ToWebKitTime(ticks_min));
36 EXPECT_EQ(double_positive_inf, webkit::ToWebKitTime(ticks_max));
37
38 // Round trip some values
39 // Outside of 2**53 the int64->double->int64 round trip isn't exact.
40 for (int i = -63; i < 53; i++) {
41 if (!i)
42 continue;
43
44 SCOPED_TRACE(i);
45 double i_abs = abs(static_cast<double>(i));
46
47 base::TimeTicks ticks_value = base::TimeTicks::FromInternalValue(
48 static_cast<int64>((i / i_abs) * pow(2.0, i_abs)));
49 EXPECT_EQ(webkit::FromWebKitTime(webkit::ToWebKitTime(ticks_value)),
50 ticks_value);
51
52 double double_value = (i / i_abs) * pow(2.0, i_abs) / 1e6;
53 EXPECT_EQ(webkit::ToWebKitTime(webkit::FromWebKitTime(double_value)),
54 double_value);
55 }
56 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698