change_path_packet_test.cc revision 8b6e6b8b9f8190cfbcdabb53ced727f81523d2b4
18f7377353db29efe0a506123deec03d70935957aAjay Panicker/* 28f7377353db29efe0a506123deec03d70935957aAjay Panicker * Copyright 2018 The Android Open Source Project 38f7377353db29efe0a506123deec03d70935957aAjay Panicker * 48f7377353db29efe0a506123deec03d70935957aAjay Panicker * Licensed under the Apache License, Version 2.0 (the "License"); 58f7377353db29efe0a506123deec03d70935957aAjay Panicker * you may not use this file except in compliance with the License. 68f7377353db29efe0a506123deec03d70935957aAjay Panicker * You may obtain a copy of the License at 78f7377353db29efe0a506123deec03d70935957aAjay Panicker * 88f7377353db29efe0a506123deec03d70935957aAjay Panicker * http://www.apache.org/licenses/LICENSE-2.0 98f7377353db29efe0a506123deec03d70935957aAjay Panicker * 108f7377353db29efe0a506123deec03d70935957aAjay Panicker * Unless required by applicable law or agreed to in writing, software 118f7377353db29efe0a506123deec03d70935957aAjay Panicker * distributed under the License is distributed on an "AS IS" BASIS, 128f7377353db29efe0a506123deec03d70935957aAjay Panicker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f7377353db29efe0a506123deec03d70935957aAjay Panicker * See the License for the specific language governing permissions and 148f7377353db29efe0a506123deec03d70935957aAjay Panicker * limitations under the License. 158f7377353db29efe0a506123deec03d70935957aAjay Panicker */ 168f7377353db29efe0a506123deec03d70935957aAjay Panicker 178f7377353db29efe0a506123deec03d70935957aAjay Panicker#include <base/logging.h> 188f7377353db29efe0a506123deec03d70935957aAjay Panicker#include <gmock/gmock.h> 198f7377353db29efe0a506123deec03d70935957aAjay Panicker#include <gtest/gtest.h> 208f7377353db29efe0a506123deec03d70935957aAjay Panicker 218f7377353db29efe0a506123deec03d70935957aAjay Panicker#include "avrcp_test_packets.h" 228f7377353db29efe0a506123deec03d70935957aAjay Panicker#include "change_path.h" 238f7377353db29efe0a506123deec03d70935957aAjay Panicker#include "packet_test_helper.h" 248f7377353db29efe0a506123deec03d70935957aAjay Panicker 258f7377353db29efe0a506123deec03d70935957aAjay Panickernamespace bluetooth { 268f7377353db29efe0a506123deec03d70935957aAjay Panickernamespace avrcp { 278f7377353db29efe0a506123deec03d70935957aAjay Panicker 288f7377353db29efe0a506123deec03d70935957aAjay Panickerusing TestChangePathReqPacket = TestPacketType<ChangePathRequest>; 298f7377353db29efe0a506123deec03d70935957aAjay Panicker 308f7377353db29efe0a506123deec03d70935957aAjay PanickerTEST(ChangePathResponseBuilderTest, builderTest) { 318f7377353db29efe0a506123deec03d70935957aAjay Panicker auto builder = ChangePathResponseBuilder::MakeBuilder(Status::NO_ERROR, 2); 328f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(builder->size(), change_path_response.size()); 338f7377353db29efe0a506123deec03d70935957aAjay Panicker 348f7377353db29efe0a506123deec03d70935957aAjay Panicker auto test_packet = TestChangePathReqPacket::Make(); 358f7377353db29efe0a506123deec03d70935957aAjay Panicker builder->Serialize(test_packet); 368f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(test_packet->GetData(), change_path_response); 378f7377353db29efe0a506123deec03d70935957aAjay Panicker} 388f7377353db29efe0a506123deec03d70935957aAjay Panicker 398f7377353db29efe0a506123deec03d70935957aAjay PanickerTEST(ChangePathResponseBuilderTest, builderErrorStatusTest) { 408f7377353db29efe0a506123deec03d70935957aAjay Panicker // NOTE: The num items in folder field doesn't matter when the status is 418f7377353db29efe0a506123deec03d70935957aAjay Panicker // not NO_ERROR 428f7377353db29efe0a506123deec03d70935957aAjay Panicker auto builder = 438f7377353db29efe0a506123deec03d70935957aAjay Panicker ChangePathResponseBuilder::MakeBuilder(Status::INVALID_DIRECTION, 2); 448f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(builder->size(), change_path_error_response.size()); 458f7377353db29efe0a506123deec03d70935957aAjay Panicker 468f7377353db29efe0a506123deec03d70935957aAjay Panicker auto test_packet = TestChangePathReqPacket::Make(); 478f7377353db29efe0a506123deec03d70935957aAjay Panicker builder->Serialize(test_packet); 488f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(test_packet->GetData(), change_path_error_response); 498f7377353db29efe0a506123deec03d70935957aAjay Panicker} 508f7377353db29efe0a506123deec03d70935957aAjay Panicker 518f7377353db29efe0a506123deec03d70935957aAjay PanickerTEST(ChangePathRequestTest, getterTest) { 528f7377353db29efe0a506123deec03d70935957aAjay Panicker auto test_packet = TestChangePathReqPacket::Make(change_path_request); 538f7377353db29efe0a506123deec03d70935957aAjay Panicker 548f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(test_packet->GetUidCounter(), 0x0000u); 558f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(test_packet->GetDirection(), Direction::DOWN); 568f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_EQ(test_packet->GetUid(), 0x0000000000000002u); 578f7377353db29efe0a506123deec03d70935957aAjay Panicker} 588f7377353db29efe0a506123deec03d70935957aAjay Panicker 598f7377353db29efe0a506123deec03d70935957aAjay PanickerTEST(ChangePathRequestTest, validTest) { 608f7377353db29efe0a506123deec03d70935957aAjay Panicker auto test_packet = TestChangePathReqPacket::Make(change_path_request); 618f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_TRUE(test_packet->IsValid()); 628f7377353db29efe0a506123deec03d70935957aAjay Panicker} 638f7377353db29efe0a506123deec03d70935957aAjay Panicker 648f7377353db29efe0a506123deec03d70935957aAjay PanickerTEST(ChangePathRequestTest, invalidTest) { 658f7377353db29efe0a506123deec03d70935957aAjay Panicker auto packet_copy = change_path_request; 668f7377353db29efe0a506123deec03d70935957aAjay Panicker packet_copy.push_back(0x00); 678f7377353db29efe0a506123deec03d70935957aAjay Panicker auto test_packet = TestChangePathReqPacket::Make(packet_copy); 688f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_FALSE(test_packet->IsValid()); 698f7377353db29efe0a506123deec03d70935957aAjay Panicker 708f7377353db29efe0a506123deec03d70935957aAjay Panicker std::vector<uint8_t> short_packet = {0x00, 0x01, 0x02, 0x03, 0x04}; 718f7377353db29efe0a506123deec03d70935957aAjay Panicker test_packet = TestChangePathReqPacket::Make(short_packet); 728f7377353db29efe0a506123deec03d70935957aAjay Panicker ASSERT_FALSE(test_packet->IsValid()); 738f7377353db29efe0a506123deec03d70935957aAjay Panicker} 748f7377353db29efe0a506123deec03d70935957aAjay Panicker 758b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay PanickerTEST(ChangePathRequestBuilder, builderTest) { 768b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker auto builder = ChangePathRequestBuilder::MakeBuilder(0, Direction::DOWN, 2); 778b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker ASSERT_EQ(builder->size(), change_path_request.size()); 788b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker 798b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker auto test_packet = TestChangePathReqPacket::Make(); 808b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker builder->Serialize(test_packet); 818b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker ASSERT_EQ(test_packet->GetData(), change_path_request); 828b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker} 838b6e6b8b9f8190cfbcdabb53ced727f81523d2b4Ajay Panicker 848f7377353db29efe0a506123deec03d70935957aAjay Panicker} // namespace avrcp 858f7377353db29efe0a506123deec03d70935957aAjay Panicker} // namespace bluetooth