From 3d991c8e855a7d9d4dba19efb5692a22437dd2c6 Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Thu, 18 Apr 2013 10:09:16 -0700 Subject: Make raw tests optional, add sanity checks for format/resolutions static info. Bug: 8654456 Change-Id: Iadd0d3c326d595dce2822a9bd3ff33ce8e8f6a36 --- tests/camera2/CameraMetadataTests.cpp | 60 +++++++++++++++++++++++++++++++++++ tests/camera2/camera2.cpp | 26 ++++++++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) (limited to 'tests/camera2') 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)); -- cgit v1.1