1 /*
2 * Copyright 2023 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 "stack/include/bt_name.h"
18
19 #include <gtest/gtest.h>
20
TEST(BtNameTest,new_name)21 TEST(BtNameTest, new_name) {
22 BD_NAME bd_name1 = {};
23 bd_name_from_char_pointer(bd_name1, "ATestName");
24
25 BD_NAME bd_name2 = {};
26 bd_name_from_char_pointer(bd_name2, "ATestName");
27
28 BD_NAME bd_name3 = {};
29 bd_name_from_char_pointer(bd_name3, "ADifferentTestName");
30
31 ASSERT_TRUE(bd_name_is_equal(bd_name1, bd_name2));
32 ASSERT_FALSE(bd_name_is_equal(bd_name1, bd_name3));
33
34 bd_name_from_char_pointer(bd_name3, "ATestName");
35 ASSERT_TRUE(bd_name_is_equal(bd_name1, bd_name3));
36 }
37
TEST(BtNameTest,new_name_nullptr)38 TEST(BtNameTest, new_name_nullptr) {
39 BD_NAME bd_name1 = {0};
40 bd_name_from_char_pointer(bd_name1, nullptr);
41 ASSERT_TRUE(bd_name_is_empty(bd_name1));
42
43 BD_NAME bd_name2 = {};
44 bd_name_from_char_pointer(bd_name2, "ARealTestName");
45 bd_name_from_char_pointer(bd_name2, nullptr);
46 ASSERT_TRUE(bd_name_is_empty(bd_name2));
47 }
48
TEST(BtNameTest,clear)49 TEST(BtNameTest, clear) {
50 BD_NAME bd_name = {};
51 bd_name_from_char_pointer(bd_name, "ATestName");
52
53 bd_name_clear(bd_name);
54 ASSERT_TRUE(bd_name_is_empty(bd_name));
55 }
56
TEST(BtNameTest,copy_name)57 TEST(BtNameTest, copy_name) {
58 BD_NAME bd_name1 = {};
59 bd_name_from_char_pointer(bd_name1, "OldName");
60
61 BD_NAME bd_name2 = {};
62 bd_name_from_char_pointer(bd_name2, "ATestName");
63
64 const size_t len = bd_name_copy(bd_name1, bd_name2);
65
66 ASSERT_EQ(strlen(reinterpret_cast<const char*>(bd_name2)), len);
67 ASSERT_TRUE(bd_name_is_equal(bd_name1, bd_name2));
68 }
69
TEST(BtNameTest,copy_name_max_chars)70 TEST(BtNameTest, copy_name_max_chars) {
71 BD_NAME bd_name1 = {};
72 std::string s(kBdNameLength, 'a');
73 s.replace(kBdNameLength - 1, 1, std::string("b"));
74 bd_name_from_char_pointer(bd_name1, s.data());
75 ASSERT_EQ('\0', bd_name1[kBdNameLength]);
76
77 BD_NAME bd_name2 = {};
78
79 const size_t len = bd_name_copy(bd_name2, bd_name1);
80 ASSERT_EQ('\0', bd_name2[kBdNameLength]);
81 ASSERT_EQ('b', bd_name2[kBdNameLength - 1]);
82
83 ASSERT_EQ(strlen(reinterpret_cast<const char*>(bd_name1)), len);
84 ASSERT_EQ(kBdNameLength, len);
85 ASSERT_TRUE(bd_name_is_equal(bd_name1, bd_name2));
86 }
87
TEST(BtNameTest,too_many_characters)88 TEST(BtNameTest, too_many_characters) {
89 std::string s(kBdNameLength + 1, 'a');
90 BD_NAME bd_name1 = {};
91 bd_name_from_char_pointer(bd_name1, s.data());
92 ASSERT_EQ('\0', bd_name1[kBdNameLength]);
93
94 ASSERT_EQ(kBdNameLength + 1, s.length());
95 ASSERT_EQ(kBdNameLength, strlen(reinterpret_cast<const char*>(bd_name1)));
96 }
97