blob: 35cff018ab5980d84165ecff5d0b00d262d27788 [file] [log] [blame]
Sebastian Jansson30bd4032018-04-13 13:56:17 +02001/*
2 * Copyright (c) 2018 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
Sebastian Jansson6fae6ec2018-05-08 10:43:18 +020011#include "api/units/data_size.h"
Sebastian Jansson30bd4032018-04-13 13:56:17 +020012#include "test/gtest.h"
13
14namespace webrtc {
15namespace test {
16
17TEST(DataSizeTest, GetBackSameValues) {
18 const int64_t kValue = 123 * 8;
19 EXPECT_EQ(DataSize::bytes(kValue).bytes(), kValue);
Sebastian Jansson30bd4032018-04-13 13:56:17 +020020}
21
22TEST(DataSizeTest, GetDifferentPrefix) {
23 const int64_t kValue = 123 * 8000;
Sebastian Jansson30bd4032018-04-13 13:56:17 +020024 EXPECT_EQ(DataSize::bytes(kValue).kilobytes(), kValue / 1000);
25}
26
27TEST(DataSizeTest, IdentityChecks) {
28 const int64_t kValue = 3000;
29 EXPECT_TRUE(DataSize::Zero().IsZero());
30 EXPECT_FALSE(DataSize::bytes(kValue).IsZero());
31
32 EXPECT_TRUE(DataSize::Infinity().IsInfinite());
33 EXPECT_FALSE(DataSize::Zero().IsInfinite());
34 EXPECT_FALSE(DataSize::bytes(kValue).IsInfinite());
35
36 EXPECT_FALSE(DataSize::Infinity().IsFinite());
37 EXPECT_TRUE(DataSize::bytes(kValue).IsFinite());
38 EXPECT_TRUE(DataSize::Zero().IsFinite());
39}
40
41TEST(DataSizeTest, ComparisonOperators) {
42 const int64_t kSmall = 450;
43 const int64_t kLarge = 451;
44 const DataSize small = DataSize::bytes(kSmall);
45 const DataSize large = DataSize::bytes(kLarge);
46
47 EXPECT_EQ(DataSize::Zero(), DataSize::bytes(0));
48 EXPECT_EQ(DataSize::Infinity(), DataSize::Infinity());
49 EXPECT_EQ(small, small);
50 EXPECT_LE(small, small);
51 EXPECT_GE(small, small);
52 EXPECT_NE(small, large);
53 EXPECT_LE(small, large);
54 EXPECT_LT(small, large);
55 EXPECT_GE(large, small);
56 EXPECT_GT(large, small);
57 EXPECT_LT(DataSize::Zero(), small);
58 EXPECT_GT(DataSize::Infinity(), large);
59}
60
61TEST(DataSizeTest, MathOperations) {
62 const int64_t kValueA = 450;
63 const int64_t kValueB = 267;
64 const DataSize size_a = DataSize::bytes(kValueA);
65 const DataSize size_b = DataSize::bytes(kValueB);
66 EXPECT_EQ((size_a + size_b).bytes(), kValueA + kValueB);
67 EXPECT_EQ((size_a - size_b).bytes(), kValueA - kValueB);
68
69 const int32_t kInt32Value = 123;
70 const double kFloatValue = 123.0;
71 EXPECT_EQ((size_a * kValueB).bytes(), kValueA * kValueB);
72 EXPECT_EQ((size_a * kInt32Value).bytes(), kValueA * kInt32Value);
73 EXPECT_EQ((size_a * kFloatValue).bytes(), kValueA * kFloatValue);
74
75 EXPECT_EQ((size_a / 10).bytes(), kValueA / 10);
76
77 DataSize mutable_size = DataSize::bytes(kValueA);
78 mutable_size += size_b;
79 EXPECT_EQ(mutable_size.bytes(), kValueA + kValueB);
80 mutable_size -= size_a;
81 EXPECT_EQ(mutable_size.bytes(), kValueB);
82}
83} // namespace test
84} // namespace webrtc