Revert "[M120 Migration]Fix for crash during chrome exit"
[platform/framework/web/chromium-efl.git] / gin / time_clamper_unittest.cc
1 // Copyright 2023 The Chromium Authors
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 "gin/time_clamper.h"
6
7 #include "base/time/time.h"
8 #include "build/build_config.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace gin {
12
13 TEST(TimeClamperTest, CurrentClockTimeMilliseconds) {
14   TimeClamper clamper(1);
15   EXPECT_EQ(0u, clamper.ClampToMillis(base::Time::UnixEpoch()));
16
17   // 1 us after unix epoch should round to 0.
18   base::Time time = base::Time::UnixEpoch() + base::Microseconds(1);
19   EXPECT_EQ(0u, clamper.ClampToMillis(time));
20
21   time = base::Time::UnixEpoch() + base::Milliseconds(1) -
22          base::Microseconds(TimeClamper::kResolutionMicros - 1);
23   EXPECT_EQ(0u, clamper.ClampToMillis(time));
24
25   time = base::Time::UnixEpoch() + base::Milliseconds(1);
26   EXPECT_EQ(1u, clamper.ClampToMillis(time));
27 }
28
29 #if !BUILDFLAG(IS_ANDROID)
30 TEST(TimeClamperTest, CurrentClockTimeMillisecondsThreshold) {
31   // This test assumes a time clamp of 5. If the clamp changes the time values
32   // will need to be adjusted.
33   ASSERT_EQ(5, TimeClamper::kResolutionMicros);
34   TimeClamper clamper(1);
35   base::Time time = base::Time::UnixEpoch() + base::Milliseconds(1) -
36                     base::Microseconds(TimeClamper::kResolutionMicros);
37   EXPECT_EQ(0u, clamper.ClampToMillis(time));
38
39   time = base::Time::UnixEpoch() + base::Milliseconds(1) -
40          base::Microseconds(TimeClamper::kResolutionMicros) +
41          base::Microseconds(1);
42   EXPECT_EQ(0u, clamper.ClampToMillis(time));
43
44   time = base::Time::UnixEpoch() + base::Milliseconds(1) -
45          base::Microseconds(TimeClamper::kResolutionMicros) +
46          base::Microseconds(2);
47   EXPECT_EQ(1u, clamper.ClampToMillis(time));
48 }
49
50 TEST(TimeClamperTest, CurrentClockTimeMillisecondsThresholdNegative) {
51   // This test assumes a time clamp of 5. If the clamp changes the time values
52   // will need to be adjusted.
53   // be adjusted.
54   ASSERT_EQ(5, TimeClamper::kResolutionMicros);
55   TimeClamper clamper(1);
56   base::Time time = base::Time::UnixEpoch() + base::Milliseconds(-1) +
57                     base::Microseconds(TimeClamper::kResolutionMicros);
58   EXPECT_EQ(0u, clamper.ClampToMillis(time));
59
60   time = base::Time::UnixEpoch() + base::Milliseconds(-1) +
61          base::Microseconds(TimeClamper::kResolutionMicros) -
62          base::Microseconds(1);
63   EXPECT_EQ(0u, clamper.ClampToMillis(time));
64
65   time = base::Time::UnixEpoch() + base::Milliseconds(-1) +
66          base::Microseconds(TimeClamper::kResolutionMicros) -
67          base::Microseconds(2);
68   EXPECT_EQ(static_cast<int64_t>(-1), clamper.ClampToMillis(time));
69 }
70
71 TEST(TimeClamperTest, CurrentClockTimeMillisecondsHighResolution) {
72   TimeClamper clamper(1);
73   EXPECT_EQ(0, clamper.ClampToMillisHighResolution(base::Time::UnixEpoch()));
74
75   base::Time time = base::Time::UnixEpoch() + base::Microseconds(1);
76   EXPECT_EQ(0, clamper.ClampToMillisHighResolution(time));
77
78   time = base::Time::UnixEpoch() +
79          base::Microseconds(TimeClamper::kResolutionMicros);
80   EXPECT_EQ(0.005, clamper.ClampToMillisHighResolution(time));
81
82   time = base::Time::UnixEpoch() + base::Milliseconds(1) -
83          base::Microseconds(TimeClamper::kResolutionMicros - 1);
84   EXPECT_EQ(0.995, clamper.ClampToMillisHighResolution(time));
85
86   time = base::Time::UnixEpoch() + base::Milliseconds(1) -
87          base::Microseconds(TimeClamper::kResolutionMicros - 3);
88   EXPECT_EQ(1, clamper.ClampToMillisHighResolution(time));
89
90   time = base::Time::UnixEpoch() + base::Milliseconds(1);
91   EXPECT_EQ(1, clamper.ClampToMillisHighResolution(time));
92
93   time =
94       base::Time::UnixEpoch() + base::Milliseconds(1) + base::Microseconds(1);
95   EXPECT_EQ(1.005, clamper.ClampToMillisHighResolution(time));
96 }
97 #endif
98
99 }  // namespace gin