10c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker/* 20c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * Copyright 2018 The Android Open Source Project 30c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * 40c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * Licensed under the Apache License, Version 2.0 (the "License"); 50c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * you may not use this file except in compliance with the License. 60c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * You may obtain a copy of the License at 70c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * 80c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * http://www.apache.org/licenses/LICENSE-2.0 90c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * 100c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * Unless required by applicable law or agreed to in writing, software 110c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * distributed under the License is distributed on an "AS IS" BASIS, 120c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * See the License for the specific language governing permissions and 140c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker * limitations under the License. 150c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker */ 160c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 170c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker#include <gtest/gtest.h> 180c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 190c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker#include "avrcp_test_packets.h" 200c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker#include "packet_test_helper.h" 210c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker#include "set_absolute_volume.h" 220c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 230c348413fb8d0a579acb8178c7e006d751508a3eAjay Panickernamespace bluetooth { 240c348413fb8d0a579acb8178c7e006d751508a3eAjay Panickernamespace avrcp { 250c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 260c348413fb8d0a579acb8178c7e006d751508a3eAjay Panickerusing TestSetVolumeRspPacket = TestPacketType<SetAbsoluteVolumeResponse>; 270c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 280c348413fb8d0a579acb8178c7e006d751508a3eAjay PanickerTEST(SetAbsoluteVolumeRequestBuilderTest, builderTest) { 290c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto builder = SetAbsoluteVolumeRequestBuilder::MakeBuilder(0x48); 300c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_EQ(builder->size(), set_absolute_volume_request.size()); 310c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 320c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto test_packet = TestSetVolumeRspPacket::Make(); 330c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker builder->Serialize(test_packet); 340c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_EQ(test_packet->GetData(), set_absolute_volume_request); 350c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} 360c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 370c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker// Test whether the volume field has the highest bit masked 380c348413fb8d0a579acb8178c7e006d751508a3eAjay PanickerTEST(SetAbsoluteVolumeRequestBuilderTest, volumeMaskTest) { 390c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto builder = SetAbsoluteVolumeRequestBuilder::MakeBuilder(0xc8); 400c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto test_packet = TestSetVolumeRspPacket::Make(); 410c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker builder->Serialize(test_packet); 420c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_EQ(test_packet->GetData(), set_absolute_volume_request); 430c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} 440c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 450c348413fb8d0a579acb8178c7e006d751508a3eAjay PanickerTEST(SetAbsoluteVolumeResponseTest, getterTest) { 460c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto test_packet = TestSetVolumeRspPacket::Make(set_absolute_volume_response); 470c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 480c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_EQ(test_packet->GetVolume(), 0x43); 490c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} 500c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 510c348413fb8d0a579acb8178c7e006d751508a3eAjay PanickerTEST(SetAbsoluteVolumeResponseTest, validTest) { 520c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto test_packet = TestSetVolumeRspPacket::Make(set_absolute_volume_response); 530c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 540c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_TRUE(test_packet->IsValid()); 550c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} 560c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 570c348413fb8d0a579acb8178c7e006d751508a3eAjay PanickerTEST(SetAbsoluteVolumeResponseTest, invalidTest) { 580c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto packet_copy = set_absolute_volume_request; 590c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker packet_copy.push_back(0x00); 600c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto test_packet = TestSetVolumeRspPacket::Make(packet_copy); 610c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_FALSE(test_packet->IsValid()); 620c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 630c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker std::vector<uint8_t> short_packet = {0x00, 0x01, 0x02, 0x03, 0x04}; 640c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker test_packet = TestSetVolumeRspPacket::Make(short_packet); 650c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_FALSE(test_packet->IsValid()); 660c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 670c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker auto wrong_ctype = set_absolute_volume_request; 680c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker wrong_ctype[0] = 0x00; 690c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker test_packet = TestSetVolumeRspPacket::Make(wrong_ctype); 700c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker ASSERT_FALSE(test_packet->IsValid()); 710c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} 720c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker 730c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} // namespace avrcp 740c348413fb8d0a579acb8178c7e006d751508a3eAjay Panicker} // namespace bluetooth