CameraModuleTests.cpp revision e302ee3dd3abacebeb32263654186ab433efc14c
1e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin/* 2e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * Copyright (C) 2012 The Android Open Source Project 3e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * 4e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 5e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * you may not use this file except in compliance with the License. 6e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * You may obtain a copy of the License at 7e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * 8e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 9e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * 10e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * Unless required by applicable law or agreed to in writing, software 11e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 12e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * See the License for the specific language governing permissions and 14e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * limitations under the License. 15e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin */ 16e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 17e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include <gtest/gtest.h> 18e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 19e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#define LOG_TAG "DISABLED_CameraModuleTest" 20e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#define LOG_NDEBUG 0 21e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include <utils/Log.h> 22e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 23e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include "hardware/hardware.h" 24e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include "hardware/camera2.h" 25e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 26e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include "Camera2Device.h" 27e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include "utils/StrongPointer.h" 28e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin#include "CameraModuleFixture.h" 29e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 30e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkinnamespace android { 31e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkinnamespace camera2 { 32e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkinnamespace tests { 33e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 34e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkinclass DISABLED_CameraModuleTest : public ::testing::Test, 35e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin public CameraModuleFixture<> { 36e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 37e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin virtual void SetUp() { 38e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin //CameraModuleFixture::SetUp(); 39e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 40e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 41e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin virtual void TearDown() { 42e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin //CameraModuleFixture::TearDown(); 43e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 44e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin}; 45e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 46e302ee3dd3abacebeb32263654186ab433efc14cIgor MurashkinTEST_F(DISABLED_CameraModuleTest, LoadModule) { 47e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 48e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin if (HasFatalFailure()) { 49e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin return; 50e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 51e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 52e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin for (int i = 0; i < mNumberOfCameras; ++i) { 53e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin mDevice = new Camera2Device(i); 54e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin ASSERT_EQ(OK, mDevice->initialize(mModule)) 55e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin << "Failed to initialize device " << i; 56e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin mDevice.clear(); 57e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 58e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 59e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 60e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 61e302ee3dd3abacebeb32263654186ab433efc14cIgor MurashkinTEST_F(DISABLED_CameraModuleTest, LoadModuleBadIndices) { 62e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 63e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin if (HasFatalFailure()) { 64e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin return; 65e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 66e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 67e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin int idx[] = { -1, mNumberOfCameras, mNumberOfCameras + 1 }; 68e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 69e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin for (unsigned i = 0; i < sizeof(idx)/sizeof(idx[0]); ++i) { 70e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin mDevice = new Camera2Device(idx[i]); 71e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin status_t deviceInitializeCode = mDevice->initialize(mModule); 72e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin EXPECT_NE(OK, deviceInitializeCode); 73e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin EXPECT_EQ(-ENODEV, deviceInitializeCode) 74e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin << "Incorrect error code when trying to initialize invalid index " 75e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin << idx[i]; 76e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin mDevice.clear(); 77e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 78e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 79e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 80e302ee3dd3abacebeb32263654186ab433efc14cIgor MurashkinTEST_F(DISABLED_CameraModuleTest, GetCameraInfo) { 81e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 82e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin if (HasFatalFailure()) { 83e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin return; 84e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 85e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 86e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin for (int i = 0; i < mNumberOfCameras; ++i) { 87e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin struct camera_info info; 88e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin ASSERT_EQ(OK, mModule->get_camera_info(i, &info)); 89e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 90e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 91e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 92e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 93e302ee3dd3abacebeb32263654186ab433efc14cIgor MurashkinTEST_F(DISABLED_CameraModuleTest, GetCameraInfoBadIndices) { 94e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 95e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin if (HasFatalFailure()) { 96e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin return; 97e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 98e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 99e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin int idx[] = { -1, mNumberOfCameras, mNumberOfCameras + 1 }; 100e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin for (unsigned i = 0; i < sizeof(idx)/sizeof(idx[0]); ++i) { 101e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin struct camera_info info; 102e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin EXPECT_NE(OK, mModule->get_camera_info(idx[i], &info)); 103e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin EXPECT_EQ(-ENODEV, mModule->get_camera_info(idx[i], &info)) 104e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin << "Incorrect error code for get_camera_info idx= " 105e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin << idx[i]; 106e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin } 107e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 108e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 109e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin/** 110e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * TODO: Additional test to add: open two cameras at once. 111e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin * (is allowed to fail, at least for now, but should not blow up) 112e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin */ 113e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 114e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 115e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 116e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 117e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 118e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 119e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin} 120e302ee3dd3abacebeb32263654186ab433efc14cIgor Murashkin 121