1 /*
2 * Copyright 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include <gtest/gtest.h>
18 #include <unordered_map>
19
20 #include "utils.h"
21
22 namespace {
23
24 using ::android::bluetooth::audio::utils::FrameCount;
25 using ::android::bluetooth::audio::utils::ParseAudioParams;
26
27 class UtilsTest : public testing::Test {
28 protected:
SetUp()29 void SetUp() override {}
TearDown()30 void TearDown() override { map_.clear(); }
31
32 std::unordered_map<std::string, std::string> map_;
33 };
34
TEST_F(UtilsTest,HashMapEmptyParams)35 TEST_F(UtilsTest, HashMapEmptyParams) {
36 std::string params = "";
37 map_ = ParseAudioParams(params);
38 // map = {}
39 EXPECT_TRUE(map_.empty());
40 }
41
TEST_F(UtilsTest,HashMapDelimitOnly)42 TEST_F(UtilsTest, HashMapDelimitOnly) {
43 std::string params = ";";
44 map_ = ParseAudioParams(params);
45 // map = {}
46 EXPECT_TRUE(map_.empty());
47 }
48
TEST_F(UtilsTest,HashMapNotKeyValuePair)49 TEST_F(UtilsTest, HashMapNotKeyValuePair) {
50 std::string params = "key0";
51 map_ = ParseAudioParams(params);
52 // map = {[key0]=""}
53 EXPECT_EQ(map_.size(), 1);
54 EXPECT_NE(map_.find("key0"), map_.end());
55 EXPECT_EQ(map_["key0"].length(), 0);
56 }
57
TEST_F(UtilsTest,HashMapEmptyValue)58 TEST_F(UtilsTest, HashMapEmptyValue) {
59 std::string params = "key0=";
60 map_ = ParseAudioParams(params);
61 // map = {[key0]=""}
62 EXPECT_EQ(map_.size(), 1);
63 EXPECT_NE(map_.find("key0"), map_.end());
64 EXPECT_EQ(map_["key0"].length(), 0);
65 }
66
TEST_F(UtilsTest,HashMapEmptyValueWithDelimit)67 TEST_F(UtilsTest, HashMapEmptyValueWithDelimit) {
68 std::string params = "key0=;";
69 map_ = ParseAudioParams(params);
70 // map = {[key0]=""}
71 EXPECT_EQ(map_.size(), 1);
72 EXPECT_NE(map_.find("key0"), map_.end());
73 EXPECT_EQ(map_["key0"].length(), 0);
74 }
75
TEST_F(UtilsTest,HashMapOneKeyValuePair)76 TEST_F(UtilsTest, HashMapOneKeyValuePair) {
77 std::string params = "key0=value0";
78 map_ = ParseAudioParams(params);
79 // map = {[key0]="value0"}
80 EXPECT_EQ(map_.size(), 1);
81 EXPECT_EQ(map_["key0"], "value0");
82 }
83
TEST_F(UtilsTest,HashMapOneKeyValuePairWithDelimit)84 TEST_F(UtilsTest, HashMapOneKeyValuePairWithDelimit) {
85 std::string params = "key0=value0;";
86 map_ = ParseAudioParams(params);
87 // map = {[key0]="value0"}
88 EXPECT_EQ(map_.size(), 1);
89 EXPECT_EQ(map_["key0"], "value0");
90 }
91
TEST_F(UtilsTest,HashMapTwoKeyValuePairs)92 TEST_F(UtilsTest, HashMapTwoKeyValuePairs) {
93 std::string params = "key0=value0;key1=value1";
94 map_ = ParseAudioParams(params);
95 // map = {[key0]="value0", [key1]="value1"}
96 EXPECT_EQ(map_.size(), 2);
97 EXPECT_EQ(map_["key0"], "value0");
98 EXPECT_EQ(map_["key1"], "value1");
99 }
100
TEST_F(UtilsTest,HashMapEmptyKey)101 TEST_F(UtilsTest, HashMapEmptyKey) {
102 std::string params = "=value";
103 map_ = ParseAudioParams(params);
104 // map = {}
105 EXPECT_TRUE(map_.empty());
106 }
107
TEST_F(UtilsTest,HashMapEmptyKeyWithDelimit)108 TEST_F(UtilsTest, HashMapEmptyKeyWithDelimit) {
109 std::string params = "=value;";
110 map_ = ParseAudioParams(params);
111 // map = {}
112 EXPECT_TRUE(map_.empty());
113 }
114
TEST_F(UtilsTest,HashMapEquivalentOnly)115 TEST_F(UtilsTest, HashMapEquivalentOnly) {
116 std::string params = "=";
117 map_ = ParseAudioParams(params);
118 // map = {}
119 EXPECT_TRUE(map_.empty());
120 }
121
TEST_F(UtilsTest,HashMapNoKeyValuePair)122 TEST_F(UtilsTest, HashMapNoKeyValuePair) {
123 std::string params = "=;";
124 map_ = ParseAudioParams(params);
125 // map = {}
126 EXPECT_TRUE(map_.empty());
127 }
128
TEST_F(UtilsTest,HashMapTwoPairsWithFirstKeyEmpty)129 TEST_F(UtilsTest, HashMapTwoPairsWithFirstKeyEmpty) {
130 std::string params = "=value0;key1=value1";
131 map_ = ParseAudioParams(params);
132 // map = {[key1]="value1"}
133 EXPECT_EQ(map_.size(), 1);
134 EXPECT_EQ(map_["key1"], "value1");
135 }
136
TEST_F(UtilsTest,FrameCountTest)137 TEST_F(UtilsTest, FrameCountTest) {
138 EXPECT_EQ(FrameCount(120000, 44100), 5292);
139 EXPECT_EQ(FrameCount(7500, 32000), 240);
140 }
141
142 } // namespace
143