diff options
author | Igor Murashkin <iam@google.com> | 2013-04-19 17:34:04 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-19 17:34:04 +0000 |
commit | 29156e437858087c393c21e0502a1652fb77dd13 (patch) | |
tree | 2f108cc83c562905f19b251b83f8f1085ebb1959 | |
parent | a7c66429136efe294240ebe96cfe67881514849f (diff) | |
parent | 3d991c8e855a7d9d4dba19efb5692a22437dd2c6 (diff) | |
download | libhardware-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.cpp | 60 | ||||
-rw-r--r-- | tests/camera2/camera2.cpp | 26 |
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)); |