| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * 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 <utils/String8.h> |
| |
| #include <gtest/gtest.h> |
| |
| #include <audio/AudioSignalFactory.h> |
| #include <ClientInterface.h> |
| #include <ClientImpl.h> |
| #include <GenericFactory.h> |
| #include <audio/RemoteAudio.h> |
| |
| |
| |
| class ClientInterfaceTest : public testing::Test { |
| protected: |
| ClientInterface* mClient; |
| |
| protected: |
| virtual void SetUp() { |
| GenericFactory factory; |
| mClient = factory.createClientInterface(); |
| ASSERT_TRUE(mClient != NULL); |
| android::String8 dummyParam; |
| ASSERT_TRUE(mClient->init(dummyParam)); |
| } |
| |
| virtual void TearDown() { |
| delete mClient; |
| mClient = NULL; |
| } |
| }; |
| |
| TEST_F(ClientInterfaceTest, InitTest) { |
| // all done in SetUp |
| } |
| |
| TEST_F(ClientInterfaceTest, getDeviceInfoTest) { |
| ClientImpl* client = reinterpret_cast<ClientImpl*>(mClient); |
| android::sp<RemoteAudio>& audio(client->getAudio()); |
| android::String8 info; |
| |
| ASSERT_TRUE(audio->getDeviceInfo(info)); |
| LOGD("device info %s", info.string()); |
| } |
| |
| TEST_F(ClientInterfaceTest, PlayTest) { |
| ClientImpl* client = reinterpret_cast<ClientImpl*>(mClient); |
| android::sp<RemoteAudio>& audio(client->getAudio()); |
| const int maxPositive = 10000; |
| const int signalFreq = AudioHardware::ESampleRate_44100/100; |
| const int samples = 8192*2; |
| android::sp<Buffer> buffer = AudioSignalFactory::generateSineWave(AudioHardware::E2BPS, |
| maxPositive, AudioHardware::ESampleRate_44100, signalFreq, samples); |
| int id; |
| android::String8 name("1"); |
| ASSERT_TRUE(audio->downloadData(name, buffer, id)); |
| ASSERT_TRUE(audio->startPlayback(true, AudioHardware::ESampleRate_44100, |
| AudioHardware::EModeVoice, 100, id, 1)); |
| ASSERT_TRUE(audio->waitForPlaybackCompletion()); |
| ASSERT_TRUE(id == audio->getDataId(name)); |
| android::String8 name2("2"); |
| ASSERT_TRUE(audio->getDataId(name2) < 0); |
| } |
| |
| TEST_F(ClientInterfaceTest, RecordTest) { |
| ClientImpl* client = reinterpret_cast<ClientImpl*>(mClient); |
| android::sp<RemoteAudio>& audio(client->getAudio()); |
| const int maxPositive = 10000; |
| const int signalFreq = AudioHardware::ESampleRate_44100 / 100; |
| const int samples = 44100 * 4; |
| android::sp<Buffer> buffer(new Buffer(samples * 2, samples * 2, false)); |
| |
| ASSERT_TRUE(audio->startRecording(false, AudioHardware::ESampleRate_44100, |
| AudioHardware::EModeVoice, 100, buffer)); |
| ASSERT_TRUE(audio->waitForRecordingCompletion()); |
| ASSERT_TRUE(buffer->amountHandled() == (samples * 2)); |
| } |