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

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: Reworking webkit_time, adding other users. 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_zero = 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 #if ENABLE_DCHECK
29 EXPECT_EQ(double_zero, webkit::ToWebKitMonotonicTime(ticks_null));
30 EXPECT_EQ(ticks_null, webkit::ToWebKitMonotonicTime(double_zero));
31 #else
32 ASSERT_DEATH(webkit::FromWebKitMonotonicTime(double_zero), "Check failed");
33 ASSERT_DEATH(webkit::FromWebKitMonotonicTime(double_max), "Check failed");
34 ASSERT_DEATH(webkit::FromWebKitMonotonicTime(double_min), "Check failed");
35 ASSERT_DEATH(webkit::FromWebKitMonotonicTime(double_positive_inf),
36 "Check failed");
37 ASSERT_DEATH(webkit::FromWebKitMonotonicTime(double_negative_inf),
38 "Check failed");
39
40 ASSERT_DEATH(webkit::ToWebKitMonotonicTime(ticks_null), "Check failed");
41 ASSERT_DEATH(webkit::ToWebKitMonotonicTime(ticks_min), "Check failed");
42 ASSERT_DEATH(webkit::ToWebKitMonotonicTime(ticks_max), "Check failed");
43 #endif
44
45 // Round trip some values
46 // Outside of 2**53 the int64->double->int64 round trip isn't exact.
47 for (int i = -52; i < 52; i++) {
48 if (!i)
49 continue;
50
51 SCOPED_TRACE(i);
52 double i_abs = abs(static_cast<double>(i));
53
54 base::TimeTicks ticks_value = base::TimeTicks::FromInternalValue(
55 static_cast<int64>((i / i_abs) * pow(2.0, i_abs)));
56 EXPECT_EQ(webkit::FromWebKitMonotonicTime(
57 webkit::ToWebKitMonotonicTime(ticks_value)),
58 ticks_value);
59
60 double double_value = (i / i_abs) * pow(2.0, i_abs) / 1e6;
61 EXPECT_EQ(webkit::ToWebKitMonotonicTime(
62 webkit::FromWebKitMonotonicTime(double_value)),
63 double_value);
64 }
65 }
OLDNEW
« cc/trees/layer_tree_host_impl.cc ('K') | « webkit/renderer/compositor_bindings/webkit_time.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698