You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.2 KiB
116 lines
3.2 KiB
/* |
|
* Copyright (C) 2016 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 "state.h" |
|
|
|
#include <camera/CameraMetadata.h> |
|
#include <gmock/gmock.h> |
|
#include <gtest/gtest.h> |
|
|
|
#include "metadata_common.h" |
|
#include "state_delegate_interface_mock.h" |
|
#include "test_common.h" |
|
|
|
using testing::AtMost; |
|
using testing::Expectation; |
|
using testing::Return; |
|
using testing::SetArgPointee; |
|
using testing::Test; |
|
using testing::_; |
|
|
|
namespace v4l2_camera_hal { |
|
|
|
class StateTest : public Test { |
|
protected: |
|
virtual void SetUp() { |
|
mock_delegate_.reset(new StateDelegateInterfaceMock<uint8_t>()); |
|
// Nullify state so an error will be thrown if a test doesn't call |
|
// PrepareState. |
|
state_.reset(); |
|
} |
|
|
|
virtual void PrepareState() { |
|
// Use this method after all the EXPECT_CALLs to pass ownership of the mocks |
|
// to the device. |
|
state_.reset(new State<uint8_t>(tag_, std::move(mock_delegate_))); |
|
} |
|
|
|
std::unique_ptr<State<uint8_t>> state_; |
|
std::unique_ptr<StateDelegateInterfaceMock<uint8_t>> mock_delegate_; |
|
|
|
// Need tag that matches the data type (uint8_t) being passed. |
|
const int32_t tag_ = ANDROID_CONTROL_AF_STATE; |
|
}; |
|
|
|
TEST_F(StateTest, Tags) { |
|
PrepareState(); |
|
EXPECT_TRUE(state_->StaticTags().empty()); |
|
EXPECT_TRUE(state_->ControlTags().empty()); |
|
ASSERT_EQ(state_->DynamicTags().size(), 1); |
|
EXPECT_EQ(state_->DynamicTags()[0], tag_); |
|
} |
|
|
|
TEST_F(StateTest, PopulateStatic) { |
|
PrepareState(); |
|
android::CameraMetadata metadata; |
|
ASSERT_EQ(state_->PopulateStaticFields(&metadata), 0); |
|
EXPECT_TRUE(metadata.isEmpty()); |
|
} |
|
|
|
TEST_F(StateTest, PopulateDynamic) { |
|
uint8_t expected = 99; |
|
EXPECT_CALL(*mock_delegate_, GetValue(_)) |
|
.WillOnce(DoAll(SetArgPointee<0>(expected), Return(0))); |
|
|
|
PrepareState(); |
|
|
|
android::CameraMetadata metadata; |
|
ASSERT_EQ(state_->PopulateDynamicFields(&metadata), 0); |
|
EXPECT_EQ(metadata.entryCount(), 1); |
|
ExpectMetadataEq(metadata, tag_, expected); |
|
} |
|
|
|
TEST_F(StateTest, PopulateDynamicFail) { |
|
int err = 123; |
|
EXPECT_CALL(*mock_delegate_, GetValue(_)).WillOnce(Return(err)); |
|
|
|
PrepareState(); |
|
|
|
android::CameraMetadata metadata; |
|
ASSERT_EQ(state_->PopulateDynamicFields(&metadata), err); |
|
} |
|
|
|
TEST_F(StateTest, PopulateTemplate) { |
|
int template_type = 3; |
|
PrepareState(); |
|
android::CameraMetadata metadata; |
|
ASSERT_EQ(state_->PopulateTemplateRequest(template_type, &metadata), 0); |
|
EXPECT_TRUE(metadata.isEmpty()); |
|
} |
|
|
|
TEST_F(StateTest, SupportsRequest) { |
|
PrepareState(); |
|
android::CameraMetadata metadata; |
|
EXPECT_TRUE(state_->SupportsRequestValues(metadata)); |
|
} |
|
|
|
TEST_F(StateTest, SetRequest) { |
|
PrepareState(); |
|
android::CameraMetadata metadata; |
|
ASSERT_EQ(state_->SetRequestValues(metadata), 0); |
|
} |
|
|
|
} // namespace v4l2_camera_hal
|
|
|