VtsHalAudioEffectV2_0TargetTest.cpp revision ed2bb4e8f851688c09f7639a9183b1285aa0967c
1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#define LOG_TAG "AudioEffectHidlHalTest"
18#include <android-base/logging.h>
19#include <cutils/native_handle.h>
20
21#include <android/hardware/audio/effect/2.0/IEffectsFactory.h>
22#include <android/hardware/audio/effect/2.0/types.h>
23
24#include <VtsHalHidlTargetTestBase.h>
25
26using ::android::hardware::audio::common::V2_0::Uuid;
27using ::android::hardware::audio::effect::V2_0::EffectDescriptor;
28using ::android::hardware::audio::effect::V2_0::IEffect;
29using ::android::hardware::audio::effect::V2_0::IEffectsFactory;
30using ::android::hardware::audio::effect::V2_0::Result;
31using ::android::hardware::Return;
32using ::android::hardware::Status;
33using ::android::hardware::Void;
34using ::android::hardware::hidl_vec;
35using ::android::sp;
36
37// The main test class for Audio Effect HIDL HAL.
38class AudioEffectHidlTest : public ::testing::VtsHalHidlTargetTestBase {
39 public:
40  virtual void SetUp() override {
41    effectsFactory = ::testing::VtsHalHidlTargetTestBase::getService<IEffectsFactory>();
42    ASSERT_NE(effectsFactory, nullptr);
43  }
44
45  virtual void TearDown() override {}
46
47  sp<IEffectsFactory> effectsFactory;
48};
49
50// A class for test environment setup (kept since this file is a template).
51class AudioEffectHidlEnvironment : public ::testing::Environment {
52 public:
53  virtual void SetUp() {}
54  virtual void TearDown() {}
55
56 private:
57};
58
59TEST_F(AudioEffectHidlTest, EnumerateEffects) {
60  Result retval = Result::NOT_INITIALIZED;
61  size_t effectCount = 0;
62  Return<void> ret = effectsFactory->getAllDescriptors(
63      [&](Result r, const hidl_vec<EffectDescriptor>& result) {
64        retval = r;
65        effectCount = result.size();
66      });
67  EXPECT_TRUE(ret.isOk());
68  EXPECT_EQ(retval, Result::OK);
69  EXPECT_GT(effectCount, 0u);
70}
71
72TEST_F(AudioEffectHidlTest, CreateEffect) {
73  bool gotEffect = false;
74  Uuid effectUuid;
75  Return<void> ret = effectsFactory->getAllDescriptors(
76      [&](Result r, const hidl_vec<EffectDescriptor>& result) {
77        if (r == Result::OK && result.size() > 0) {
78          gotEffect = true;
79          effectUuid = result[0].uuid;
80        }
81      });
82  ASSERT_TRUE(ret.isOk());
83  ASSERT_TRUE(gotEffect);
84  Result retval = Result::NOT_INITIALIZED;
85  sp<IEffect> effect;
86  ret = effectsFactory->createEffect(
87      effectUuid, 1 /* session */, 1 /* ioHandle */,
88      [&](Result r, const sp<IEffect>& result, uint64_t /*effectId*/) {
89        retval = r;
90        if (r == Result::OK) {
91          effect = result;
92        }
93      });
94  EXPECT_TRUE(ret.isOk());
95  EXPECT_EQ(retval, Result::OK);
96  EXPECT_NE(effect, nullptr);
97}
98
99TEST_F(AudioEffectHidlTest, GetDescriptor) {
100  hidl_vec<EffectDescriptor> allDescriptors;
101  Return<void> ret = effectsFactory->getAllDescriptors(
102      [&](Result r, const hidl_vec<EffectDescriptor>& result) {
103        if (r == Result::OK) {
104          allDescriptors = result;
105        }
106      });
107  ASSERT_TRUE(ret.isOk());
108  ASSERT_GT(allDescriptors.size(), 0u);
109  for (size_t i = 0; i < allDescriptors.size(); ++i) {
110    ret = effectsFactory->getDescriptor(
111        allDescriptors[i].uuid, [&](Result r, const EffectDescriptor& result) {
112          EXPECT_EQ(r, Result::OK);
113          EXPECT_EQ(result, allDescriptors[i]);
114        });
115  }
116  EXPECT_TRUE(ret.isOk());
117}
118
119int main(int argc, char** argv) {
120  ::testing::AddGlobalTestEnvironment(new AudioEffectHidlEnvironment);
121  ::testing::InitGoogleTest(&argc, argv);
122  int status = RUN_ALL_TESTS();
123  LOG(INFO) << "Test result = " << status;
124  return status;
125}
126