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