summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-04-19 17:34:04 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-19 17:34:04 +0000
commit29156e437858087c393c21e0502a1652fb77dd13 (patch)
tree2f108cc83c562905f19b251b83f8f1085ebb1959
parenta7c66429136efe294240ebe96cfe67881514849f (diff)
parent3d991c8e855a7d9d4dba19efb5692a22437dd2c6 (diff)
downloadlibhardware-29156e437858087c393c21e0502a1652fb77dd13.tar.gz
Merge "Make raw tests optional, add sanity checks for format/resolutions static info." into jb-mr2-dev
-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 722e71ed..8cae6193 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 64803c0b..0f750700 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));