blob: 07509495a41a8abfd08949b92a208d61edd1141a [file] [log] [blame]
Weilin Xuef981342023-12-13 16:08:04 -08001/*
2 * Copyright (C) 2024 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 <broadcastradio-utils-aidl/Utils.h>
18#include <gtest/gtest.h>
19
20namespace aidl::android::hardware::broadcastradio {
21
22namespace {
23constexpr int64_t kFmFrequencyKHz = 97900;
24constexpr uint64_t kDabSidExt = 0x0E10000C221u;
25constexpr uint32_t kDabEnsemble = 0xCE15u;
26constexpr uint64_t kDabFrequencyKhz = 225648u;
27constexpr uint64_t kHdStationId = 0xA0000001u;
28constexpr uint64_t kHdSubChannel = 1u;
29constexpr uint64_t kHdFrequency = 97700u;
30} // namespace
31
32TEST(BroadcastRadioUtilsTest, hasIdWithPrimaryIdType) {
33 ProgramSelector sel = utils::makeSelectorAmfm(kFmFrequencyKHz);
34
35 ASSERT_TRUE(utils::hasId(sel, IdentifierType::AMFM_FREQUENCY_KHZ));
36}
37
38TEST(BroadcastRadioUtilsTest, makeIdentifier) {
39 ProgramIdentifier id =
40 utils::makeIdentifier(IdentifierType::AMFM_FREQUENCY_KHZ, kFmFrequencyKHz);
41
42 ASSERT_EQ(id.type, IdentifierType::AMFM_FREQUENCY_KHZ);
43 ASSERT_EQ(id.value, kFmFrequencyKHz);
44}
45
46TEST(BroadcastRadioUtilsTest, makeSelectorAmfm) {
47 ProgramSelector sel = utils::makeSelectorAmfm(kFmFrequencyKHz);
48
49 ASSERT_EQ(sel.primaryId.type, IdentifierType::AMFM_FREQUENCY_KHZ);
50 ASSERT_EQ(sel.primaryId.value, kFmFrequencyKHz);
51 ASSERT_TRUE(sel.secondaryIds.empty());
52}
53
54TEST(BroadcastRadioUtilsTest, makeSelectorHd) {
55 ProgramSelector sel = utils::makeSelectorHd(kHdStationId, kHdSubChannel, kHdFrequency);
56
57 ASSERT_EQ(sel.primaryId.type, IdentifierType::HD_STATION_ID_EXT);
58 ASSERT_TRUE(sel.secondaryIds.empty());
59 ASSERT_EQ(utils::getHdSubchannel(sel), static_cast<int>(kHdSubChannel));
60 ASSERT_EQ(utils::getHdFrequency(sel), static_cast<uint32_t>(kHdFrequency));
61}
62
63TEST(BroadcastRadioUtilsTest, makeHdRadioStationName) {
64 std::string stationName = "aB1-FM";
65 int64_t expectedIdValue = 0x4D46314241;
66
67 ProgramIdentifier stationNameId = utils::makeHdRadioStationName(stationName);
68
69 ASSERT_EQ(stationNameId.type, IdentifierType::HD_STATION_NAME);
70 ASSERT_EQ(stationNameId.value, expectedIdValue);
71}
72
73TEST(BroadcastRadioUtilsTest, getHdFrequencyWithoutHdId) {
74 ProgramSelector sel = utils::makeSelectorDab(kDabSidExt, kDabEnsemble, kDabFrequencyKhz);
75
76 ASSERT_EQ(utils::getHdFrequency(sel), 0u);
77}
78
79TEST(BroadcastRadioUtilsTest, hasAmFmFrequencyWithAmFmSelector) {
80 ProgramSelector sel = utils::makeSelectorAmfm(kFmFrequencyKHz);
81
82 ASSERT_TRUE(utils::hasAmFmFrequency(sel));
83}
84
85TEST(BroadcastRadioUtilsTest, hasAmFmFrequencyWithHdSelector) {
86 ProgramSelector sel = utils::makeSelectorHd(kHdStationId, kHdSubChannel, kHdFrequency);
87
88 ASSERT_TRUE(utils::hasAmFmFrequency(sel));
89}
90
91TEST(BroadcastRadioUtilsTest, hasAmFmFrequencyWithNonAmFmHdSelector) {
92 ProgramSelector sel = utils::makeSelectorDab(kDabSidExt, kDabEnsemble, kDabFrequencyKhz);
93
94 ASSERT_FALSE(utils::hasAmFmFrequency(sel));
95}
96
97TEST(BroadcastRadioUtilsTest, getAmFmFrequencyWithAmFmSelector) {
98 ProgramSelector sel = utils::makeSelectorAmfm(kFmFrequencyKHz);
99
100 ASSERT_EQ(utils::getAmFmFrequency(sel), static_cast<uint32_t>(kFmFrequencyKHz));
101}
102
103TEST(BroadcastRadioUtilsTest, getAmFmFrequencyWithHdSelector) {
104 ProgramSelector sel = utils::makeSelectorHd(kHdStationId, kHdSubChannel, kHdFrequency);
105
106 ASSERT_EQ(utils::getAmFmFrequency(sel), static_cast<uint32_t>(kHdFrequency));
107}
108
109TEST(BroadcastRadioUtilsTest, getAmFmFrequencyWithNonAmFmHdSelector) {
110 ProgramSelector sel = utils::makeSelectorDab(kDabSidExt, kDabEnsemble, kDabFrequencyKhz);
111
112 ASSERT_EQ(utils::getAmFmFrequency(sel), 0u);
113}
114
115} // namespace aidl::android::hardware::broadcastradio