1/*
2 * Copyright 2017 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 "l2cap_sdu.h"
18
19#include <gtest/gtest.h>
20#include <memory>
21
22#include "l2cap_test_packets.h"
23
24using std::vector;
25
26namespace test_vendor_lib {
27
28std::shared_ptr<L2capSdu> packet_1 =
29    L2capSdu::L2capSduConstructor(l2cap_test_packet_1);
30std::shared_ptr<L2capSdu> packet_2 =
31    L2capSdu::L2capSduConstructor(l2cap_test_packet_2);
32std::shared_ptr<L2capSdu> packet_3 =
33    L2capSdu::L2capSduConstructor(l2cap_test_packet_3);
34std::shared_ptr<L2capSdu> packet_4 =
35    L2capSdu::L2capSduConstructor(l2cap_test_packet_4);
36std::shared_ptr<L2capSdu> packet_5 =
37    L2capSdu::L2capSduConstructor(l2cap_test_packet_5);
38std::shared_ptr<L2capSdu> packet_6 =
39    L2capSdu::L2capSduConstructor(l2cap_test_packet_6);
40std::shared_ptr<L2capSdu> packet_7 =
41    L2capSdu::L2capSduConstructor(l2cap_test_packet_7);
42std::shared_ptr<L2capSdu> packet_8 =
43    L2capSdu::L2capSduConstructor(l2cap_test_packet_8);
44std::shared_ptr<L2capSdu> packet_9 =
45    L2capSdu::L2capSduConstructor(l2cap_test_packet_9);
46
47class L2capSduTest : public ::testing::Test {
48 public:
49  L2capSduTest(){};
50
51  ~L2capSduTest() = default;
52
53};  // L2capSduTest
54
55TEST_F(L2capSduTest, getFcsTest) {
56  EXPECT_EQ(0x72aa, packet_1->get_fcs());
57  EXPECT_EQ(0x5b57, packet_2->get_fcs());
58  EXPECT_EQ(0xe644, packet_3->get_fcs());
59  EXPECT_EQ(0x21b0, packet_4->get_fcs());
60  EXPECT_EQ(0xae96, packet_5->get_fcs());
61  EXPECT_EQ(0x9254, packet_6->get_fcs());
62  EXPECT_EQ(0xf6fa, packet_7->get_fcs());
63  EXPECT_EQ(0x1da4, packet_8->get_fcs());
64  EXPECT_EQ(0x781a, packet_9->get_fcs());
65}
66
67TEST_F(L2capSduTest, getPayloadLengthTest) {
68  EXPECT_EQ(l2cap_test_packet_1.size() - 4, packet_1->get_payload_length());
69  EXPECT_EQ(l2cap_test_packet_2.size() - 4, packet_2->get_payload_length());
70  EXPECT_EQ(l2cap_test_packet_3.size() - 4, packet_3->get_payload_length());
71  EXPECT_EQ(l2cap_test_packet_4.size() - 4, packet_4->get_payload_length());
72  EXPECT_EQ(l2cap_test_packet_5.size() - 4, packet_5->get_payload_length());
73  EXPECT_EQ(l2cap_test_packet_6.size() - 4, packet_6->get_payload_length());
74  EXPECT_EQ(l2cap_test_packet_7.size() - 4, packet_7->get_payload_length());
75  EXPECT_EQ(l2cap_test_packet_8.size() - 4, packet_8->get_payload_length());
76  EXPECT_EQ(l2cap_test_packet_9.size() - 4, packet_9->get_payload_length());
77}
78
79TEST_F(L2capSduTest, calculateFcsTest) {
80  EXPECT_EQ(0x72aa, packet_1->calculate_fcs());
81  EXPECT_EQ(0x5b57, packet_2->calculate_fcs());
82  EXPECT_EQ(0xe644, packet_3->calculate_fcs());
83  EXPECT_EQ(0x21b0, packet_4->calculate_fcs());
84  EXPECT_EQ(0xae96, packet_5->calculate_fcs());
85  EXPECT_EQ(0x9254, packet_6->calculate_fcs());
86  EXPECT_EQ(0xf6fa, packet_7->calculate_fcs());
87  EXPECT_EQ(0x1da4, packet_8->calculate_fcs());
88  EXPECT_EQ(0x781a, packet_9->calculate_fcs());
89}
90
91TEST_F(L2capSduTest, getControlsTest) {
92  EXPECT_EQ(0x4102, packet_1->get_controls());
93  EXPECT_EQ(0xc104, packet_2->get_controls());
94  EXPECT_EQ(0xc106, packet_3->get_controls());
95  EXPECT_EQ(0xc108, packet_4->get_controls());
96  EXPECT_EQ(0xc10a, packet_5->get_controls());
97  EXPECT_EQ(0xc10c, packet_6->get_controls());
98  EXPECT_EQ(0xc10e, packet_7->get_controls());
99  EXPECT_EQ(0xc110, packet_8->get_controls());
100  EXPECT_EQ(0x8112, packet_9->get_controls());
101}
102
103TEST_F(L2capSduTest, getTotalLengthTest) {
104  EXPECT_EQ(0x1f95, packet_1->get_total_l2cap_length());
105}
106
107TEST_F(L2capSduTest, getVectorSizeTest) {
108  EXPECT_EQ(l2cap_test_packet_1.size(), packet_1->get_vector_size());
109  EXPECT_EQ(l2cap_test_packet_2.size(), packet_2->get_vector_size());
110  EXPECT_EQ(l2cap_test_packet_3.size(), packet_3->get_vector_size());
111  EXPECT_EQ(l2cap_test_packet_4.size(), packet_4->get_vector_size());
112  EXPECT_EQ(l2cap_test_packet_5.size(), packet_5->get_vector_size());
113  EXPECT_EQ(l2cap_test_packet_6.size(), packet_6->get_vector_size());
114  EXPECT_EQ(l2cap_test_packet_7.size(), packet_7->get_vector_size());
115  EXPECT_EQ(l2cap_test_packet_8.size(), packet_8->get_vector_size());
116  EXPECT_EQ(l2cap_test_packet_9.size(), packet_9->get_vector_size());
117}
118
119TEST_F(L2capSduTest, getCidTest) {
120  EXPECT_EQ(0x0047, packet_1->get_channel_id());
121  EXPECT_EQ(0x0047, packet_2->get_channel_id());
122  EXPECT_EQ(0x0047, packet_3->get_channel_id());
123  EXPECT_EQ(0x0047, packet_4->get_channel_id());
124  EXPECT_EQ(0x0047, packet_5->get_channel_id());
125  EXPECT_EQ(0x0047, packet_6->get_channel_id());
126  EXPECT_EQ(0x0047, packet_7->get_channel_id());
127  EXPECT_EQ(0x0047, packet_8->get_channel_id());
128  EXPECT_EQ(0x0047, packet_9->get_channel_id());
129}
130
131}  // namespace test_vendor_lib
132