1341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker/* 2341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * Copyright 2018 The Android Open Source Project 3341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * 4341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * Licensed under the Apache License, Version 2.0 (the "License"); 5341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * you may not use this file except in compliance with the License. 6341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * You may obtain a copy of the License at 7341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * 8341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * http://www.apache.org/licenses/LICENSE-2.0 9341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * 10341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * Unless required by applicable law or agreed to in writing, software 11341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * distributed under the License is distributed on an "AS IS" BASIS, 12341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * See the License for the specific language governing permissions and 14341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker * limitations under the License. 15341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker */ 16341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 17341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker#include <gtest/gtest.h> 18341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker#include <memory> 19341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 20341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker#include "packet.h" 21341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker#include "packet_test_common.h" 22341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker#include "test_packets.h" 23341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 24341ab2befa059e859cdc67655d83bac14980ea9eAjay Panickerusing std::vector; 25341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 26341ab2befa059e859cdc67655d83bac14980ea9eAjay Panickernamespace bluetooth { 27341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 28341ab2befa059e859cdc67655d83bac14980ea9eAjay PanickerTEST(PacketBuilderTest, serializeTest) { 29341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto builder = TestPacketBuilder::MakeBuilder(test_l2cap_data); 30341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto packet = TestPacket::Make(); 31341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 32341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->Serialize(packet); 33341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 34341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker for (size_t i = 0; i < test_l2cap_data.size(); i++) { 35341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker ASSERT_EQ(test_l2cap_data[i], (*packet)[i]); 36341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker } 37341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker} 38341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 39341ab2befa059e859cdc67655d83bac14980ea9eAjay PanickerTEST(PacketBuilderTest, sizeTest) { 40341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto builder = TestPacketBuilder::MakeBuilder(test_l2cap_data); 41341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 42341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker ASSERT_EQ(builder->size(), test_l2cap_data.size()); 43341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker} 44341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 45341ab2befa059e859cdc67655d83bac14980ea9eAjay PanickerTEST(PacketBuilderTest, reserveSpaceTest) { 46341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto packet = TestPacket::Make(); 47341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker ASSERT_EQ(packet->GetData().capacity(), 0u); 48341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 49341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto builder = TestPacketBuilder::MakeBuilder(test_l2cap_data); 50341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->ReserveSpace(packet, test_l2cap_data.size()); 51341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 52341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker ASSERT_GE(packet->GetData().capacity(), test_l2cap_data.size()); 53341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker} 54341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 55341ab2befa059e859cdc67655d83bac14980ea9eAjay PanickerTEST(PacketBuilderTest, addPayloadOctetsTest) { 56341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto builder = TestPacketBuilder::MakeBuilder(test_l2cap_data); 57341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker auto packet = TestPacket::Make(); 58341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 59341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets1(packet, 0x01u); 60341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets2(packet, 0x0302u); 61341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets3(packet, 0x060504u); 62341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets4(packet, 0x0A090807u); 63341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets6(packet, 0x100F0E0D0C0Bu); 64341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker builder->AddPayloadOctets8(packet, 0x1817161514131211u); 65341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 66341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker for (size_t i = 0; i < 0x18; i++) { 67341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker ASSERT_EQ((*packet)[i], i + 1); 68341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker } 69341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker} 70341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker 71341ab2befa059e859cdc67655d83bac14980ea9eAjay Panicker} // namespace bluetooth