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