| /* |
| * Copyright 2012 The WebRTC Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "rtc_base/data_rate_limiter.h" |
| |
| #include "test/gtest.h" |
| |
| namespace rtc { |
| |
| TEST(RateLimiterTest, TestCanUse) { |
| // Diet: Can eat 2,000 calories per day. |
| DataRateLimiter limiter = DataRateLimiter(2000, 1.0); |
| |
| double monday = 1.0; |
| double tuesday = 2.0; |
| double thursday = 4.0; |
| |
| EXPECT_TRUE(limiter.CanUse(0, monday)); |
| EXPECT_TRUE(limiter.CanUse(1000, monday)); |
| EXPECT_TRUE(limiter.CanUse(1999, monday)); |
| EXPECT_TRUE(limiter.CanUse(2000, monday)); |
| EXPECT_FALSE(limiter.CanUse(2001, monday)); |
| |
| limiter.Use(1000, monday); |
| |
| EXPECT_TRUE(limiter.CanUse(0, monday)); |
| EXPECT_TRUE(limiter.CanUse(999, monday)); |
| EXPECT_TRUE(limiter.CanUse(1000, monday)); |
| EXPECT_FALSE(limiter.CanUse(1001, monday)); |
| |
| limiter.Use(1000, monday); |
| |
| EXPECT_TRUE(limiter.CanUse(0, monday)); |
| EXPECT_FALSE(limiter.CanUse(1, monday)); |
| |
| EXPECT_TRUE(limiter.CanUse(0, tuesday)); |
| EXPECT_TRUE(limiter.CanUse(1, tuesday)); |
| EXPECT_TRUE(limiter.CanUse(1999, tuesday)); |
| EXPECT_TRUE(limiter.CanUse(2000, tuesday)); |
| EXPECT_FALSE(limiter.CanUse(2001, tuesday)); |
| |
| limiter.Use(1000, tuesday); |
| |
| EXPECT_TRUE(limiter.CanUse(1000, tuesday)); |
| EXPECT_FALSE(limiter.CanUse(1001, tuesday)); |
| |
| limiter.Use(1000, thursday); |
| |
| EXPECT_TRUE(limiter.CanUse(1000, tuesday)); |
| EXPECT_FALSE(limiter.CanUse(1001, tuesday)); |
| } |
| |
| } // namespace rtc |