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