blob: 9ceb8ff0cb51ddf08eda50b252ad32f79cef8f1b [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/dips/dips_utils.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(TimestampRangeTest, UpdateEmpty) {
const base::Time time = base::Time::FromDoubleT(1);
TimestampRange range;
EXPECT_TRUE(range.Update(time));
EXPECT_EQ(range.first, time);
EXPECT_EQ(range.last, time);
}
TEST(TimestampRangeTest, Update_SetLast) {
const base::Time time1 = base::Time::FromDoubleT(1);
const base::Time time2 = base::Time::FromDoubleT(2);
const base::Time time3 = base::Time::FromDoubleT(3);
TimestampRange range = {time1, time2};
EXPECT_TRUE(range.Update(time3));
EXPECT_EQ(range.first, time1);
EXPECT_EQ(range.last, time3);
}
TEST(TimestampRangeTest, Update_SetFirst) {
const base::Time time1 = base::Time::FromDoubleT(1);
const base::Time time2 = base::Time::FromDoubleT(2);
const base::Time time3 = base::Time::FromDoubleT(3);
TimestampRange range = {time2, time3};
EXPECT_TRUE(range.Update(time1));
EXPECT_EQ(range.first, time1);
EXPECT_EQ(range.last, time3);
}
TEST(TimestampRangeTest, Update_Unmodified) {
const base::Time time1 = base::Time::FromDoubleT(1);
const base::Time time2 = base::Time::FromDoubleT(2);
const base::Time time3 = base::Time::FromDoubleT(3);
TimestampRange range = {time1, time3};
EXPECT_FALSE(range.Update(time2));
EXPECT_EQ(range.first, time1);
EXPECT_EQ(range.last, time3);
}
TEST(BucketizeBounceDelayTest, BucketizeBounceDelay) {
// any TimeDelta in (-inf, 1s) should return 0
EXPECT_EQ(0, BucketizeBounceDelay(base::Days(-1)));
EXPECT_EQ(0, BucketizeBounceDelay(base::Milliseconds(0)));
EXPECT_EQ(0, BucketizeBounceDelay(base::Milliseconds(999)));
// anything in [1s, 2s) should return 1
EXPECT_EQ(1, BucketizeBounceDelay(base::Milliseconds(1000)));
EXPECT_EQ(1, BucketizeBounceDelay(base::Milliseconds(1999)));
// similarly for [2s, 3s)
EXPECT_EQ(2, BucketizeBounceDelay(base::Milliseconds(2000)));
EXPECT_EQ(2, BucketizeBounceDelay(base::Milliseconds(2999)));
// ...
EXPECT_EQ(9, BucketizeBounceDelay(base::Milliseconds(9999)));
// anything in [10s, inf) should return 10
EXPECT_EQ(10, BucketizeBounceDelay(base::Milliseconds(10000)));
EXPECT_EQ(10, BucketizeBounceDelay(base::Milliseconds(10001)));
EXPECT_EQ(10, BucketizeBounceDelay(base::Days(1)));
}