/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <gtest/gtest.h> #include <climits> #include "osal_mem.h" #include "v4_0/iaudio_capture.h" #include "v4_0/iaudio_manager.h" using namespace std; using namespace testing::ext; namespace { static const uint32_t MAX_AUDIO_ADAPTER_NUM = 5; const int BUFFER_LENTH = 1024 * 16; const int DEEP_BUFFER_CAPTURE_PERIOD_SIZE = 4 * 1024; const int DEFAULT_BUFFER_SIZE = 16384; const float HALF_OF_MAX_VOLUME = 0.5; const int MOVE_LEFT_NUM = 8; const int TEST_SAMPLE_RATE_MASK_48000 = 48000; const int TEST_CHANNEL_COUNT = 2; const uint32_t INVALID_SCENE_ID = -1; class AudioUtCaptureTest : public testing::Test { public: struct IAudioManager *manager_ = nullptr;; struct IAudioAdapter *adapter_ = nullptr; struct IAudioCapture *capture_ = nullptr; uint32_t captureId_ = 0; char *devDescriptorName_ = nullptr; struct AudioAdapterDescriptor *adapterDescs_ = nullptr; virtual void SetUp(); virtual void TearDown(); uint64_t GetCaptureBufferSize(); void InitCaptureDevDesc(struct AudioDeviceDescriptor &devDesc); void InitCaptureAttrs(struct AudioSampleAttributes &attrs); void FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf); void ReleaseAllAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen); }; /* common method for capture ceate */ uint64_t AudioUtCaptureTest::GetCaptureBufferSize() { int32_t ret = HDF_SUCCESS; uint64_t frameSize = 0; uint64_t frameCount = 0; uint64_t bufferSize = 0; if (capture_ == nullptr) { return DEFAULT_BUFFER_SIZE; } ret = capture_->GetFrameSize(capture_, &frameSize); if (ret != HDF_SUCCESS) { return DEFAULT_BUFFER_SIZE; } ret = capture_->GetFrameCount(capture_, &frameCount); if (ret != HDF_SUCCESS) { return DEFAULT_BUFFER_SIZE; } bufferSize = frameCount * frameSize; if (bufferSize == 0) { bufferSize = DEFAULT_BUFFER_SIZE; } return bufferSize; } void AudioUtCaptureTest::InitCaptureDevDesc(struct AudioDeviceDescriptor &devDesc) { devDesc.pins = (enum AudioPortPin)PIN_IN_MIC; devDescriptorName_ = strdup("cardname"); devDesc.desc = devDescriptorName_; ASSERT_NE(adapterDescs_, nullptr); ASSERT_NE(adapterDescs_->ports, nullptr); for (uint32_t index = 0; index < adapterDescs_->portsLen; index++) { if (adapterDescs_->ports[index].dir == PORT_IN) { devDesc.portId = adapterDescs_->ports[index].portId; return; } } } void AudioUtCaptureTest::InitCaptureAttrs(struct AudioSampleAttributes &attrs) { attrs.format = AUDIO_FORMAT_TYPE_PCM_16_BIT; attrs.channelCount = TEST_CHANNEL_COUNT; attrs.sampleRate = TEST_SAMPLE_RATE_MASK_48000; attrs.interleaved = 0; attrs.type = AUDIO_IN_MEDIA; attrs.period = DEEP_BUFFER_CAPTURE_PERIOD_SIZE; attrs.frameSize = AUDIO_FORMAT_TYPE_PCM_16_BIT * TEST_CHANNEL_COUNT / MOVE_LEFT_NUM; attrs.isBigEndian = false; attrs.isSignedData = true; attrs.startThreshold = DEEP_BUFFER_CAPTURE_PERIOD_SIZE / (attrs.format * attrs.channelCount / MOVE_LEFT_NUM); attrs.stopThreshold = INT_MAX; attrs.silenceThreshold = BUFFER_LENTH; } void AudioUtCaptureTest::FreeAdapterElements(struct AudioAdapterDescriptor *dataBlock, bool freeSelf) { if (dataBlock == nullptr) { return; } if (dataBlock->adapterName != nullptr) { OsalMemFree(dataBlock->adapterName); dataBlock->adapterName = nullptr; } if (dataBlock->ports != nullptr) { OsalMemFree(dataBlock->ports); } if (freeSelf) { OsalMemFree(dataBlock); } } void AudioUtCaptureTest::ReleaseAllAdapterDescs(struct AudioAdapterDescriptor **descs, uint32_t descsLen) { if ((descsLen > 0) && (descs != nullptr) && ((*descs) != nullptr)) { for (uint32_t i = 0; i < descsLen; i++) { FreeAdapterElements(&(*descs)[i], false); } OsalMemFree(*descs); *descs = nullptr; } } void AudioUtCaptureTest::SetUp() { uint32_t size = MAX_AUDIO_ADAPTER_NUM; struct AudioDeviceDescriptor devDesc = {}; struct AudioSampleAttributes attrs = {}; manager_ = IAudioManagerGet(false); ASSERT_NE(manager_, nullptr); adapterDescs_ = (struct AudioAdapterDescriptor *)OsalMemCalloc( sizeof(struct AudioAdapterDescriptor) * (MAX_AUDIO_ADAPTER_NUM)); ASSERT_NE(adapterDescs_, nullptr); EXPECT_EQ(HDF_SUCCESS, manager_->GetAllAdapters(manager_, adapterDescs_, &size)); if (size > MAX_AUDIO_ADAPTER_NUM) { ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM); ASSERT_LT(size, MAX_AUDIO_ADAPTER_NUM); } EXPECT_EQ(HDF_SUCCESS, manager_->LoadAdapter(manager_, &adapterDescs_[0], &adapter_)); if (adapter_ == nullptr) { ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM); EXPECT_NE(adapter_, nullptr); } InitCaptureDevDesc(devDesc); InitCaptureAttrs(attrs); EXPECT_EQ(HDF_SUCCESS, adapter_->CreateCapture(adapter_, &devDesc, &attrs, &capture_, &captureId_)); if (capture_ == nullptr) { (void)manager_->UnloadAdapter(manager_, adapterDescs_[0].adapterName); ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM); } ASSERT_NE(capture_, nullptr); } void AudioUtCaptureTest::TearDown() { ASSERT_NE(devDescriptorName_, nullptr); free(devDescriptorName_); ASSERT_NE(capture_, nullptr); EXPECT_EQ(HDF_SUCCESS, adapter_->DestroyCapture(adapter_, captureId_)); ASSERT_NE(manager_, nullptr); EXPECT_EQ(HDF_SUCCESS, manager_->UnloadAdapter(manager_, adapterDescs_[0].adapterName)); ReleaseAllAdapterDescs(&adapterDescs_, MAX_AUDIO_ADAPTER_NUM); IAudioManagerRelease(manager_, false); } /* capture frame cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFrame001, TestSize.Level1) { uint32_t frameLen = (uint64_t)GetCaptureBufferSize(); uint64_t requestBytes = frameLen; ASSERT_NE(capture_->CaptureFrame, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); int8_t *frame = (int8_t *)calloc(1, frameLen); EXPECT_NE(nullptr, frame); ret = capture_->CaptureFrame(capture_, frame, &frameLen, &requestBytes); EXPECT_EQ(ret, HDF_SUCCESS); capture_->Stop(capture_); if (frame != nullptr) { free(frame); frame = nullptr; } } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFrameExceptions001, TestSize.Level1) { uint32_t invalidLen = -1; uint64_t requestBytes = invalidLen; ASSERT_NE(capture_->CaptureFrame, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); int8_t *frame = (int8_t *)calloc(1, sizeof(int)); EXPECT_NE(nullptr, frame); EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(nullptr, nullptr, nullptr, nullptr)); EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, nullptr, nullptr)); EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, &invalidLen, nullptr)); EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(nullptr, frame, &invalidLen, &requestBytes)); EXPECT_NE(HDF_SUCCESS, capture_->CaptureFrame(capture_, frame, &invalidLen, &requestBytes)); capture_->Stop(capture_); if (frame != nullptr) { free(frame); frame = nullptr; } } /* capture getposition cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePosition001, TestSize.Level1) { uint64_t frames; struct AudioTimeStamp time; uint32_t frameLen = (uint64_t)GetCaptureBufferSize(); uint64_t requestBytes = frameLen; ASSERT_NE(capture_->CaptureFrame, nullptr); ASSERT_NE(capture_->GetCapturePosition, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); int8_t *frame = (int8_t *)calloc(1, frameLen); EXPECT_NE(nullptr, frame); ret = capture_->CaptureFrame(capture_, frame, &frameLen, &requestBytes); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->GetCapturePosition(capture_, &frames, &time); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); capture_->Stop(capture_); if (frame != nullptr) { free(frame); frame = nullptr; } } HWTEST_F(AudioUtCaptureTest, HdfAudioGetCapturePositionExceptions001, TestSize.Level1) { int32_t ret; uint64_t frames; struct AudioTimeStamp time; ASSERT_NE(capture_->GetCapturePosition, nullptr); ret = capture_->GetCapturePosition(capture_, &frames, &time); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); ret = capture_->GetCapturePosition(capture_, nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetCapturePosition(capture_, &frames, nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /** * @brief from here starts the control tests */ /* capture start cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStart001, TestSize.Level1) { ASSERT_NE(capture_->Start, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); capture_->Stop(capture_); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureException001, TestSize.Level1) { ASSERT_NE(capture_->Start, nullptr); int32_t ret = capture_->Start(nullptr); EXPECT_NE(ret, HDF_SUCCESS); capture_->Stop(capture_); } /* capture stop cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStop001, TestSize.Level1) { ASSERT_NE(capture_->Start, nullptr); ASSERT_NE(capture_->Stop, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->Stop(capture_); EXPECT_EQ(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureStopException002, TestSize.Level1) { ASSERT_NE(capture_->Stop, nullptr); int32_t ret = capture_->Stop(nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture pause cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePause001, TestSize.Level1) { ASSERT_NE(capture_->Pause, nullptr); ASSERT_NE(capture_->Start, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->Pause(capture_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM); capture_->Stop(capture_); } HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException001, TestSize.Level1) { ASSERT_NE(capture_->Pause, nullptr); int32_t ret = capture_->Pause(nullptr); EXPECT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCapturePauseException002, TestSize.Level1) { ASSERT_NE(capture_->Pause, nullptr); ASSERT_NE(capture_->Start, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->Pause(capture_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); ret = capture_->Pause(capture_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); capture_->Stop(capture_); } /* capture resume cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResume001, TestSize.Level1) { ASSERT_NE(capture_->Pause, nullptr); ASSERT_NE(capture_->Resume, nullptr); ASSERT_NE(capture_->Start, nullptr); ASSERT_NE(capture_->Stop, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->Pause(capture_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); ret = capture_->Resume(capture_); EXPECT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); ret = capture_->Stop(capture_); ASSERT_EQ(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException001, TestSize.Level1) { ASSERT_NE(capture_->Resume, nullptr); int32_t ret = capture_->Resume(capture_); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureResumeException002, TestSize.Level1) { ASSERT_NE(capture_->Resume, nullptr); int32_t ret = capture_->Resume(nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture flush cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlush001, TestSize.Level1) { ASSERT_NE(capture_->Flush, nullptr); int32_t ret = capture_->Flush(capture_); EXPECT_EQ(HDF_ERR_NOT_SUPPORT, ret); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureFlushException001, TestSize.Level1) { ASSERT_NE(capture_->Flush, nullptr); int32_t ret = capture_->Flush(nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture TurnStandbyMode cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyMode001, TestSize.Level1) { ASSERT_NE(capture_->TurnStandbyMode, nullptr); ASSERT_NE(capture_->Start, nullptr); int32_t ret = capture_->Start(capture_); EXPECT_EQ(ret, HDF_SUCCESS); ret = capture_->TurnStandbyMode(capture_); EXPECT_EQ(ret, HDF_SUCCESS); capture_->Stop(capture_); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureTurnStandbyModeException001, TestSize.Level1) { ASSERT_NE(capture_->TurnStandbyMode, nullptr); int32_t ret = capture_->TurnStandbyMode(nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture AudioDevDump cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDump001, TestSize.Level1) { ASSERT_NE(capture_->AudioDevDump, nullptr); int32_t range = 4; char pathBuf[] = "/data/CaptureDump.log"; FILE *file = fopen(pathBuf, "wb+"); ASSERT_NE(nullptr, file); int fd = fileno(file); if (fd == -1) { fclose(file); ASSERT_NE(fd, -1); } int32_t ret = capture_->AudioDevDump(capture_, range, fd); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); fclose(file); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAudioDevDumpExption001, TestSize.Level1) { ASSERT_NE(capture_->AudioDevDump, nullptr); int32_t range = 4; int32_t ret = capture_->AudioDevDump(nullptr, range, -1); EXPECT_NE(ret, HDF_SUCCESS); } /** * @brief here starts the volume test cases */ /* capture SetMute cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMute001, TestSize.Level1) { bool isSupport = false; ASSERT_NE(capture_->SetMute, nullptr); ASSERT_NE(capture_->GetMute, nullptr); int32_t ret = capture_->SetMute(capture_, isSupport); if (ret == HDF_SUCCESS) { ret = capture_->GetMute(capture_, &isSupport); ASSERT_EQ(isSupport, false); } else if (ret == HDF_ERR_NOT_SUPPORT) { ASSERT_TRUE(true); } else { ASSERT_TRUE(false); } isSupport = true; ret = capture_->SetMute(capture_, isSupport); if (ret == HDF_SUCCESS) { ret = capture_->GetMute(capture_, &isSupport); ASSERT_EQ(isSupport, true); } else if (ret == HDF_ERR_NOT_SUPPORT) { ASSERT_TRUE(true); } else { ASSERT_TRUE(false); } } // set twice HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException001, TestSize.Level1) { bool isSupport = true; ASSERT_NE(capture_->SetMute, nullptr); ASSERT_NE(capture_->GetMute, nullptr); int32_t ret = capture_->SetMute(capture_, isSupport); if (ret == HDF_SUCCESS) { ret = capture_->GetMute(capture_, &isSupport); ASSERT_EQ(isSupport, true); } else if (ret == HDF_ERR_NOT_SUPPORT) { ASSERT_TRUE(true); } else { ASSERT_TRUE(false); } ret = capture_->SetMute(capture_, isSupport); if (ret == HDF_SUCCESS) { ret = capture_->GetMute(capture_, &isSupport); ASSERT_EQ(isSupport, true); } else if (ret == HDF_ERR_NOT_SUPPORT) { ASSERT_TRUE(true); } else { ASSERT_TRUE(false); } } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetMuteException002, TestSize.Level1) { EXPECT_NE(capture_->SetMute, nullptr); int32_t ret = capture_->SetMute(nullptr, true); EXPECT_NE(ret, HDF_SUCCESS); } /* capture GetMute cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMute001, TestSize.Level1) { bool isSupport = true; EXPECT_NE(capture_->GetMute, nullptr); int32_t ret = capture_->GetMute(capture_, &isSupport); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetMuteException001, TestSize.Level1) { EXPECT_NE(capture_->GetMute, nullptr); int32_t ret = capture_->GetMute(nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetMute(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture SetVolume cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolume001, TestSize.Level1) { float volume = 0.0; EXPECT_NE(capture_->SetVolume, nullptr); EXPECT_NE(capture_->GetVolume, nullptr); int32_t ret = capture_->SetVolume(capture_, HALF_OF_MAX_VOLUME); if (ret == HDF_SUCCESS) { ret = capture_->GetVolume(capture_, &volume); ASSERT_EQ(volume, HALF_OF_MAX_VOLUME); } else if (ret == HDF_ERR_NOT_SUPPORT) { ASSERT_TRUE(true); } else { ASSERT_TRUE(false); } } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException001, TestSize.Level1) { float exceptionVolume = 2.0; EXPECT_NE(capture_->SetVolume, nullptr); int32_t ret = capture_->SetVolume(capture_, exceptionVolume); EXPECT_NE(ret, HDF_SUCCESS); exceptionVolume = -3.0; ret = capture_->SetVolume(capture_, exceptionVolume); EXPECT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetVolumeException002, TestSize.Level1) { EXPECT_NE(capture_->SetVolume, nullptr); int32_t ret = capture_->SetVolume(nullptr, HALF_OF_MAX_VOLUME); EXPECT_NE(ret, HDF_SUCCESS); } /* capture GetVolume cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolume001, TestSize.Level1) { float volume = 0.0; EXPECT_NE(capture_->GetVolume, nullptr); int32_t ret = capture_->GetVolume(capture_, &volume); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVolumeException001, TestSize.Level1) { float volume = 0.0; EXPECT_NE(capture_->GetVolume, nullptr); int32_t ret = capture_->GetVolume(nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetVolume(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetVolume(nullptr, &volume); EXPECT_NE(ret, HDF_SUCCESS); } /* capture GetGainThreshold cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThreshold001, TestSize.Level1) { float bottom = 0; float top = 0; EXPECT_NE(capture_->GetGainThreshold, nullptr); int32_t ret = capture_->GetGainThreshold(capture_, &bottom, &top); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainThresholdException002, TestSize.Level1) { float bottom = 0; float top = 0; EXPECT_NE(capture_->GetGainThreshold, nullptr); int32_t ret = capture_->GetGainThreshold(nullptr, &bottom, &top); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetGainThreshold(nullptr, nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetGainThreshold(capture_, nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGain001, TestSize.Level1) { EXPECT_NE(capture_->SetGain, nullptr); int32_t ret = capture_->SetGain(capture_, HALF_OF_MAX_VOLUME); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetGainException001, TestSize.Level1) { EXPECT_NE(capture_->SetGain, nullptr); float exceptionGain = -3.0; int32_t ret = capture_->SetGain(capture_, exceptionGain); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->SetGain(nullptr, HALF_OF_MAX_VOLUME); EXPECT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGain001, TestSize.Level1) { EXPECT_NE(capture_->GetGain, nullptr); float getGain; int32_t ret = capture_->GetGain(capture_, &getGain); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetGainException001, TestSize.Level1) { EXPECT_NE(capture_->SetGain, nullptr); float exceptionGain = 2.0; int32_t ret = capture_->GetGain(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetGain(nullptr, &exceptionGain); EXPECT_NE(ret, HDF_SUCCESS); } /** * @brief here starts the attributes cases */ /* capture GetSampleAttributes cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributes001, TestSize.Level1) { struct AudioSampleAttributes attrs = {}; EXPECT_NE(capture_->GetSampleAttributes, nullptr); int32_t ret = capture_->GetSampleAttributes(capture_, &attrs); EXPECT_EQ(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetSampleAttributesException001, TestSize.Level1) { struct AudioSampleAttributes attrs = {}; EXPECT_NE(capture_->GetSampleAttributes, nullptr); int32_t ret = capture_->GetSampleAttributes(nullptr, &attrs); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetSampleAttributes(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetSampleAttributes001, TestSize.Level1) { struct AudioSampleAttributes attrs = { .format = AUDIO_FORMAT_TYPE_PCM_16_BIT, .sampleRate = TEST_SAMPLE_RATE_MASK_48000, .channelCount = TEST_CHANNEL_COUNT, }; EXPECT_NE(capture_->SetSampleAttributes, nullptr); int32_t ret = capture_->SetSampleAttributes(capture_, &attrs); #ifdef ALSA_SUPPORT_FEATURE EXPECT_EQ(ret, HDF_SUCCESS); #else EXPECT_NE(ret, HDF_SUCCESS); #endif ret = capture_->SetSampleAttributes(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->SetSampleAttributes(nullptr, &attrs); EXPECT_NE(ret, HDF_SUCCESS); } /* capture GetCurrentChannelId cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelId001, TestSize.Level1) { int32_t ret = HDF_SUCCESS; uint32_t channelId = 0; EXPECT_NE(capture_->GetCurrentChannelId, nullptr); ret = capture_->GetCurrentChannelId(capture_, &channelId); EXPECT_EQ(ret, HDF_SUCCESS); EXPECT_EQ(TEST_CHANNEL_COUNT, channelId); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetCurrentChannelIdException001, TestSize.Level1) { int32_t ret = HDF_SUCCESS; uint32_t channelId = 0; EXPECT_NE(capture_->GetCurrentChannelId, nullptr); ret = capture_->GetCurrentChannelId(capture_, nullptr); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetCurrentChannelId(nullptr, &channelId); EXPECT_NE(ret, HDF_SUCCESS); } /* capture SetExtraParams cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParams001, TestSize.Level1) { EXPECT_NE(capture_->SetExtraParams, nullptr); EXPECT_NE(capture_->GetExtraParams, nullptr); char kvList[] = "attr-route=1;attr-format=32;attr-channels=2;attr-frame-count=82;attr-sampling-rate=48000"; char keyValueListReply[256] = {}; uint32_t listLenth = 256; size_t index = 1; int32_t ret = capture_->SetExtraParams(capture_, kvList); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT); ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth); // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM); std::string strGetValue = keyValueListReply; size_t indexAttr = strGetValue.find("attr-frame-count"); size_t indexFlag = strGetValue.rfind(";"); if (indexAttr != string::npos && indexFlag != string::npos) { strGetValue.replace(indexAttr, indexFlag - indexAttr + index, ""); } } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSetExtraParamsException001, TestSize.Level1) { ASSERT_NE(capture_->SetExtraParams, nullptr); int32_t ret = capture_->SetExtraParams(nullptr, nullptr); EXPECT_NE(ret, HDF_SUCCESS); } /* capture GetExtraParams cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParams001, TestSize.Level1) { ASSERT_NE(capture_->GetExtraParams, nullptr); char keyValueListReply[256] = {}; uint32_t listLenth = 256; int32_t ret = capture_->GetExtraParams(capture_, keyValueListReply, listLenth); // the vendor can not supply this method,one it not supply returns HDF_ERR_INVALID_PARAM ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_INVALID_PARAM); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetExtraParamsException001, TestSize.Level1) { ASSERT_NE(capture_->GetExtraParams, nullptr); char keyValueListReply[256] = {}; uint32_t listLenth = 256; int32_t ret = capture_->GetExtraParams(nullptr, keyValueListReply, listLenth); EXPECT_NE(ret, HDF_SUCCESS); ret = capture_->GetExtraParams(capture_, nullptr, listLenth); EXPECT_NE(ret, HDF_SUCCESS); } /* capture selectsene cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectScene001, TestSize.Level1) { ASSERT_NE(capture_->SelectScene, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.desc.pins = PIN_IN_MIC; sceneDesc.desc.desc = strdup("mic"); sceneDesc.scene.id = AUDIO_IN_CALL; int32_t ret = capture_->SelectScene(capture_, &sceneDesc); EXPECT_EQ(ret, HDF_SUCCESS); free(sceneDesc.desc.desc); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectSceneException001, TestSize.Level1) { ASSERT_NE(capture_->SelectScene, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.scene.id = AUDIO_IN_CALL; int32_t ret = capture_->SelectScene(capture_, nullptr); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->SelectScene(nullptr, &sceneDesc); ASSERT_NE(ret, HDF_SUCCESS); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureSelectSceneInValid001, TestSize.Level1) { ASSERT_NE(capture_->SelectScene, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.scene.id = INVALID_SCENE_ID; sceneDesc.desc.pins = PIN_IN_MIC; sceneDesc.desc.desc = strdup("mic"); int32_t ret = capture_->SelectScene(capture_, &sceneDesc); ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT); free(sceneDesc.desc.desc); } /* capture get version cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersion001, TestSize.Level1) { ASSERT_NE(capture_->GetVersion, nullptr); uint32_t majorVer; uint32_t minorVer; ASSERT_EQ(HDF_SUCCESS, capture_->GetVersion(capture_, &majorVer, &minorVer)); EXPECT_EQ(IAUDIO_MANAGER_MAJOR_VERSION, majorVer); EXPECT_EQ(IAUDIO_MANAGER_MINOR_VERSION, minorVer); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetVersionException001, TestSize.Level1) { ASSERT_NE(capture_->GetVersion, nullptr); uint32_t majorVer; uint32_t minorVer; EXPECT_EQ(HDF_ERR_INVALID_OBJECT, capture_->GetVersion(nullptr, &majorVer, &minorVer)); } /* capture support pause and resume cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResume001, TestSize.Level1) { ASSERT_NE(capture_->GetVersion, nullptr); bool supportPause = false; bool supportResume = false; int32_t ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, &supportResume); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureIsSupportsPauseAndResumeException001, TestSize.Level1) { ASSERT_NE(capture_->IsSupportsPauseAndResume, nullptr); bool supportPause = false; bool supportResume = false; int32_t ret = capture_->IsSupportsPauseAndResume(nullptr, &supportPause, &supportResume); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->IsSupportsPauseAndResume(capture_, nullptr, &supportResume); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->IsSupportsPauseAndResume(capture_, &supportPause, nullptr); ASSERT_NE(ret, HDF_SUCCESS); } /* capture GetFrameBufferSize cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSize001, TestSize.Level1) { ASSERT_NE(capture_->GetFrameBufferSize, nullptr); uint64_t bufferSize = 0; int32_t ret = capture_->GetFrameBufferSize(capture_, &bufferSize); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureGetFrameBufferSizeException001, TestSize.Level1) { ASSERT_NE(capture_->GetFrameBufferSize, nullptr); uint64_t bufferSize = 0; int32_t ret = capture_->GetFrameBufferSize(nullptr, &bufferSize); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->GetFrameBufferSize(capture_, nullptr); ASSERT_NE(ret, HDF_SUCCESS); } /* capture AddAudioEffect cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffect001, TestSize.Level1) { ASSERT_NE(capture_->AddAudioEffect, nullptr); uint64_t effectId = 0; int32_t ret = capture_->AddAudioEffect(capture_, effectId); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureAddAudioEffectException001, TestSize.Level1) { ASSERT_NE(capture_->AddAudioEffect, nullptr); uint64_t effectId = -1; int32_t ret = capture_->AddAudioEffect(nullptr, effectId); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->AddAudioEffect(capture_, effectId); ASSERT_NE(ret, HDF_SUCCESS); } /* capture RemoveAudioEffect cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffect001, TestSize.Level1) { ASSERT_NE(capture_->RemoveAudioEffect, nullptr); uint64_t effectId = 0; int32_t ret = capture_->RemoveAudioEffect(capture_, effectId); ASSERT_TRUE(ret == HDF_SUCCESS || ret == HDF_ERR_NOT_SUPPORT || ret == HDF_ERR_INVALID_PARAM); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureRemoveAudioEffectException001, TestSize.Level1) { ASSERT_NE(capture_->RemoveAudioEffect, nullptr); uint64_t effectId = -1; int32_t ret = capture_->RemoveAudioEffect(nullptr, effectId); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->RemoveAudioEffect(capture_, effectId); ASSERT_NE(ret, HDF_SUCCESS); } /* capture CheckSceneCapability cases */ HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapabilityException001, TestSize.Level1) { ASSERT_NE(capture_->CheckSceneCapability, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.desc.pins = PIN_IN_MIC; sceneDesc.desc.desc = strdup("mic"); sceneDesc.scene.id = AUDIO_IN_COMMUNICATION; bool isSupport = false; int32_t ret = capture_->CheckSceneCapability(capture_, &sceneDesc, &isSupport); EXPECT_EQ(ret, HDF_SUCCESS); free(sceneDesc.desc.desc); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapabilityInValid001, TestSize.Level1) { ASSERT_NE(capture_->CheckSceneCapability, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.desc.pins = PIN_IN_MIC; sceneDesc.desc.desc = strdup("mic"); sceneDesc.scene.id = INVALID_SCENE_ID; bool isSupport = false; int32_t ret = capture_->CheckSceneCapability(capture_, &sceneDesc, &isSupport); ASSERT_TRUE(ret == HDF_FAILURE || ret == HDF_ERR_NOT_SUPPORT); free(sceneDesc.desc.desc); } HWTEST_F(AudioUtCaptureTest, HdfAudioCaptureCheckSceneCapability001, TestSize.Level1) { ASSERT_NE(capture_->CheckSceneCapability, nullptr); struct AudioSceneDescriptor sceneDesc = {}; sceneDesc.scene.id = AUDIO_IN_COMMUNICATION; bool isSupport = false; int32_t ret = capture_->CheckSceneCapability(nullptr, &sceneDesc, &isSupport); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->CheckSceneCapability(capture_, nullptr, &isSupport); ASSERT_NE(ret, HDF_SUCCESS); ret = capture_->CheckSceneCapability(capture_, &sceneDesc, nullptr); ASSERT_NE(ret, HDF_SUCCESS); } } // end of name space