Make raw tests optional, add sanity checks for format/resolutions static info.
Bug: 8654456
Change-Id: Iadd0d3c326d595dce2822a9bd3ff33ce8e8f6a36
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 @@
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, 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)
+
+}
+
}
}
}