summaryrefslogtreecommitdiffstats
path: root/tests/camera2
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-04-18 10:09:16 -0700
committerIgor Murashkin <iam@google.com>2013-04-18 11:00:16 -0700
commit3d991c8e855a7d9d4dba19efb5692a22437dd2c6 (patch)
tree302dc01e489136347d8ffa7475a479ae1467ec53 /tests/camera2
parent827e137bb168a6cd77011e7a66a2a4250e25d800 (diff)
downloadhardware_libhardware-3d991c8e855a7d9d4dba19efb5692a22437dd2c6.zip
hardware_libhardware-3d991c8e855a7d9d4dba19efb5692a22437dd2c6.tar.gz
hardware_libhardware-3d991c8e855a7d9d4dba19efb5692a22437dd2c6.tar.bz2
Make raw tests optional, add sanity checks for format/resolutions static info.
Bug: 8654456 Change-Id: Iadd0d3c326d595dce2822a9bd3ff33ce8e8f6a36
Diffstat (limited to 'tests/camera2')
-rw-r--r--tests/camera2/CameraMetadataTests.cpp60
-rw-r--r--tests/camera2/camera2.cpp26
2 files changed, 85 insertions, 1 deletions
diff --git a/tests/camera2/CameraMetadataTests.cpp b/tests/camera2/CameraMetadataTests.cpp
index 722e71e..8cae619 100644
--- a/tests/camera2/CameraMetadataTests.cpp
+++ b/tests/camera2/CameraMetadataTests.cpp
@@ -70,6 +70,22 @@ public:
return entry.type;
}
+ int GetEntryCountFromStaticTag(uint32_t tag) const {
+ const CameraMetadata& staticInfo = mDevice->info();
+ camera_metadata_ro_entry entry = staticInfo.find(tag);
+ return entry.count;
+ }
+
+ bool HasElementInArrayFromStaticTag(uint32_t tag, int32_t element) const {
+ const CameraMetadata& staticInfo = mDevice->info();
+ camera_metadata_ro_entry entry = staticInfo.find(tag);
+ for (size_t i = 0; i < entry.count; ++i) {
+ if (entry.data.i32[i] == element)
+ return true;
+ }
+ return false;
+ }
+
protected:
};
@@ -115,6 +131,50 @@ TEST_F(CameraMetadataTest, types) {
}
}
+TEST_F(CameraMetadataTest, RequiredFormats) {
+ TEST_EXTENSION_FORKING_INIT;
+
+ EXPECT_TRUE(
+ HasElementInArrayFromStaticTag(ANDROID_SCALER_AVAILABLE_FORMATS,
+ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED));
+
+ EXPECT_TRUE(
+ HasElementInArrayFromStaticTag(ANDROID_SCALER_AVAILABLE_FORMATS,
+ HAL_PIXEL_FORMAT_BLOB)); // JPEG
+
+ EXPECT_TRUE(
+ HasElementInArrayFromStaticTag(ANDROID_SCALER_AVAILABLE_FORMATS,
+ HAL_PIXEL_FORMAT_YCrCb_420_SP)); // NV21
+
+ EXPECT_TRUE(
+ HasElementInArrayFromStaticTag(ANDROID_SCALER_AVAILABLE_FORMATS,
+ HAL_PIXEL_FORMAT_YV12));
+}
+
+TEST_F(CameraMetadataTest, SaneResolutions) {
+ TEST_EXTENSION_FORKING_INIT;
+
+ // Iff there are listed raw resolutions, the format should be available
+ int rawResolutionsCount =
+ GetEntryCountFromStaticTag(HAL_PIXEL_FORMAT_RAW_SENSOR);
+ EXPECT_EQ(rawResolutionsCount > 0,
+ HasElementInArrayFromStaticTag(ANDROID_SCALER_AVAILABLE_FORMATS,
+ HAL_PIXEL_FORMAT_RAW_SENSOR));
+
+ // Required processed sizes.
+ int processedSizeCount =
+ GetEntryCountFromStaticTag(ANDROID_SCALER_AVAILABLE_PROCESSED_SIZES);
+ EXPECT_NE(0, processedSizeCount);
+ EXPECT_EQ(0, processedSizeCount % 2); // multiple of 2 (w,h)
+
+ // Required JPEG sizes
+ int jpegSizeCount =
+ GetEntryCountFromStaticTag(ANDROID_SCALER_AVAILABLE_JPEG_SIZES);
+ EXPECT_NE(0, jpegSizeCount);
+ EXPECT_EQ(0, jpegSizeCount % 2); // multiple of 2 (w,h)
+
+}
+
}
}
}
diff --git a/tests/camera2/camera2.cpp b/tests/camera2/camera2.cpp
index 64803c0..0f75070 100644
--- a/tests/camera2/camera2.cpp
+++ b/tests/camera2/camera2.cpp
@@ -393,6 +393,18 @@ TEST_F(Camera2Test, Capture1Raw) {
getResolutionList(format,
&rawResolutions, &rawResolutionsCount);
+
+ if (rawResolutionsCount <= 0) {
+ const ::testing::TestInfo* const test_info =
+ ::testing::UnitTest::GetInstance()->current_test_info();
+ std::cerr << "Skipping test "
+ << test_info->test_case_name() << "."
+ << test_info->name()
+ << " because the optional format was not available: "
+ << "RAW_SENSOR" << std::endl;
+ return;
+ }
+
ASSERT_LT((size_t)0, rawResolutionsCount);
// Pick first available raw resolution
@@ -515,6 +527,18 @@ TEST_F(Camera2Test, CaptureBurstRaw) {
getResolutionList(format,
&rawResolutions, &rawResolutionsCount);
+
+ if (rawResolutionsCount <= 0) {
+ const ::testing::TestInfo* const test_info =
+ ::testing::UnitTest::GetInstance()->current_test_info();
+ std::cerr << "Skipping test "
+ << test_info->test_case_name() << "."
+ << test_info->name()
+ << " because the optional format was not available: "
+ << "RAW_SENSOR" << std::endl;
+ return;
+ }
+
ASSERT_LT((uint32_t)0, rawResolutionsCount);
// Pick first available raw resolution
@@ -650,7 +674,7 @@ TEST_F(Camera2Test, ConstructDefaultRequests) {
i,
&request);
EXPECT_EQ(NO_ERROR, res) <<
- "Unable to construct request from template type %d", i;
+ "Unable to construct request from template type " << i;
EXPECT_TRUE(request != NULL);
EXPECT_LT((size_t)0, get_camera_metadata_entry_count(request));
EXPECT_LT((size_t)0, get_camera_metadata_data_count(request));