Home | History | Annotate | Download | only in base
      1 /*
      2  *  Copyright 2012 The WebRTC Project Authors. All rights reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include "webrtc/base/gunit.h"
     12 #include "webrtc/base/ratelimiter.h"
     13 
     14 namespace rtc {
     15 
     16 TEST(RateLimiterTest, TestCanUse) {
     17   // Diet: Can eat 2,000 calories per day.
     18   RateLimiter limiter = RateLimiter(2000, 1.0);
     19 
     20   double monday = 1.0;
     21   double tuesday = 2.0;
     22   double thursday = 4.0;
     23 
     24   EXPECT_TRUE(limiter.CanUse(0, monday));
     25   EXPECT_TRUE(limiter.CanUse(1000, monday));
     26   EXPECT_TRUE(limiter.CanUse(1999, monday));
     27   EXPECT_TRUE(limiter.CanUse(2000, monday));
     28   EXPECT_FALSE(limiter.CanUse(2001, monday));
     29 
     30   limiter.Use(1000, monday);
     31 
     32   EXPECT_TRUE(limiter.CanUse(0, monday));
     33   EXPECT_TRUE(limiter.CanUse(999, monday));
     34   EXPECT_TRUE(limiter.CanUse(1000, monday));
     35   EXPECT_FALSE(limiter.CanUse(1001, monday));
     36 
     37   limiter.Use(1000, monday);
     38 
     39   EXPECT_TRUE(limiter.CanUse(0, monday));
     40   EXPECT_FALSE(limiter.CanUse(1, monday));
     41 
     42   EXPECT_TRUE(limiter.CanUse(0, tuesday));
     43   EXPECT_TRUE(limiter.CanUse(1, tuesday));
     44   EXPECT_TRUE(limiter.CanUse(1999, tuesday));
     45   EXPECT_TRUE(limiter.CanUse(2000, tuesday));
     46   EXPECT_FALSE(limiter.CanUse(2001, tuesday));
     47 
     48   limiter.Use(1000, tuesday);
     49 
     50   EXPECT_TRUE(limiter.CanUse(1000, tuesday));
     51   EXPECT_FALSE(limiter.CanUse(1001, tuesday));
     52 
     53   limiter.Use(1000, thursday);
     54 
     55   EXPECT_TRUE(limiter.CanUse(1000, tuesday));
     56   EXPECT_FALSE(limiter.CanUse(1001, tuesday));
     57 }
     58 
     59 }  // namespace rtc
     60