Home | History | Annotate | Download | only in quic
      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 "net/quic/quic_bandwidth.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 namespace net {
      9 namespace test {
     10 
     11 class QuicBandwidthTest : public ::testing::Test {
     12 };
     13 
     14 TEST_F(QuicBandwidthTest, FromTo) {
     15   EXPECT_EQ(QuicBandwidth::FromKBitsPerSecond(1),
     16             QuicBandwidth::FromBitsPerSecond(1000));
     17   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(1),
     18             QuicBandwidth::FromBytesPerSecond(1000));
     19   EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(8000),
     20             QuicBandwidth::FromBytesPerSecond(1000));
     21   EXPECT_EQ(QuicBandwidth::FromKBitsPerSecond(8),
     22             QuicBandwidth::FromKBytesPerSecond(1));
     23 
     24   EXPECT_EQ(0, QuicBandwidth::Zero().ToBitsPerSecond());
     25   EXPECT_EQ(0, QuicBandwidth::Zero().ToKBitsPerSecond());
     26   EXPECT_EQ(0, QuicBandwidth::Zero().ToBytesPerSecond());
     27   EXPECT_EQ(0, QuicBandwidth::Zero().ToKBytesPerSecond());
     28 
     29   EXPECT_EQ(1, QuicBandwidth::FromBitsPerSecond(1000).ToKBitsPerSecond());
     30   EXPECT_EQ(1000, QuicBandwidth::FromKBitsPerSecond(1).ToBitsPerSecond());
     31   EXPECT_EQ(1, QuicBandwidth::FromBytesPerSecond(1000).ToKBytesPerSecond());
     32   EXPECT_EQ(1000, QuicBandwidth::FromKBytesPerSecond(1).ToBytesPerSecond());
     33 }
     34 
     35 TEST_F(QuicBandwidthTest, Add) {
     36   QuicBandwidth bandwidht_1 = QuicBandwidth::FromKBitsPerSecond(1);
     37   QuicBandwidth bandwidht_2 = QuicBandwidth::FromKBytesPerSecond(1);
     38 
     39   EXPECT_EQ(9000, bandwidht_1.Add(bandwidht_2).ToBitsPerSecond());
     40   EXPECT_EQ(9000, bandwidht_2.Add(bandwidht_1).ToBitsPerSecond());
     41 }
     42 
     43 TEST_F(QuicBandwidthTest, Subtract) {
     44   QuicBandwidth bandwidht_1 = QuicBandwidth::FromKBitsPerSecond(1);
     45   QuicBandwidth bandwidht_2 = QuicBandwidth::FromKBytesPerSecond(1);
     46 
     47   EXPECT_EQ(7000, bandwidht_2.Subtract(bandwidht_1).ToBitsPerSecond());
     48 }
     49 
     50 TEST_F(QuicBandwidthTest, TimeDelta) {
     51   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(1000),
     52             QuicBandwidth::FromBytesAndTimeDelta(
     53                 1000, QuicTime::Delta::FromMilliseconds(1)));
     54 
     55   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(10),
     56             QuicBandwidth::FromBytesAndTimeDelta(
     57                 1000, QuicTime::Delta::FromMilliseconds(100)));
     58 }
     59 
     60 TEST_F(QuicBandwidthTest, Scale) {
     61   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(500),
     62             QuicBandwidth::FromKBytesPerSecond(1000).Scale(0.5f));
     63   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(750),
     64             QuicBandwidth::FromKBytesPerSecond(1000).Scale(0.75f));
     65   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(1250),
     66             QuicBandwidth::FromKBytesPerSecond(1000).Scale(1.25f));
     67 }
     68 
     69 
     70 TEST_F(QuicBandwidthTest, BytesPerPeriod) {
     71   EXPECT_EQ(2000u, QuicBandwidth::FromKBytesPerSecond(2000).ToBytesPerPeriod(
     72       QuicTime::Delta::FromMilliseconds(1)));
     73   EXPECT_EQ(2u, QuicBandwidth::FromKBytesPerSecond(2000).ToKBytesPerPeriod(
     74       QuicTime::Delta::FromMilliseconds(1)));
     75   EXPECT_EQ(200000u, QuicBandwidth::FromKBytesPerSecond(2000).ToBytesPerPeriod(
     76       QuicTime::Delta::FromMilliseconds(100)));
     77   EXPECT_EQ(200u, QuicBandwidth::FromKBytesPerSecond(2000).ToKBytesPerPeriod(
     78       QuicTime::Delta::FromMilliseconds(100)));
     79 }
     80 
     81 TEST_F(QuicBandwidthTest, TransferTime) {
     82   EXPECT_EQ(QuicTime::Delta::FromSeconds(1),
     83             QuicBandwidth::FromKBytesPerSecond(1).TransferTime(1000));
     84 }
     85 
     86 }  // namespace test
     87 }  // namespace net
     88