From fda001b666c8f46aa5072a8d42ecdcee77fec1a7 Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Tue, 23 May 2023 19:31:14 +0530 Subject: [PATCH 1/2] Updated error tests to use XCTAssertEqualObjects --- .../ios/test/text/text_classifier/MPPTextClassifierTests.m | 4 +--- .../ios/test/text/text_embedder/MPPTextEmbedderTests.m | 4 +--- .../test/vision/image_classifier/MPPImageClassifierTests.m | 6 ++---- .../test/vision/object_detector/MPPObjectDetectorTests.m | 4 +--- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/mediapipe/tasks/ios/test/text/text_classifier/MPPTextClassifierTests.m b/mediapipe/tasks/ios/test/text/text_classifier/MPPTextClassifierTests.m index a80fb8824..2ffccd2b7 100644 --- a/mediapipe/tasks/ios/test/text/text_classifier/MPPTextClassifierTests.m +++ b/mediapipe/tasks/ios/test/text/text_classifier/MPPTextClassifierTests.m @@ -28,9 +28,7 @@ static NSString *const kExpectedErrorDomain = @"com.google.mediapipe.tasks"; XCTAssertNotNil(error); \ XCTAssertEqualObjects(error.domain, expectedError.domain); \ XCTAssertEqual(error.code, expectedError.code); \ - XCTAssertNotEqual( \ - [error.localizedDescription rangeOfString:expectedError.localizedDescription].location, \ - NSNotFound) + XCTAssertEqualObjects(error.localizedDescription, expectedError.localizedDescription) #define AssertEqualCategoryArrays(categories, expectedCategories) \ XCTAssertEqual(categories.count, expectedCategories.count); \ diff --git a/mediapipe/tasks/ios/test/text/text_embedder/MPPTextEmbedderTests.m b/mediapipe/tasks/ios/test/text/text_embedder/MPPTextEmbedderTests.m index b32bb076c..51d37667c 100644 --- a/mediapipe/tasks/ios/test/text/text_embedder/MPPTextEmbedderTests.m +++ b/mediapipe/tasks/ios/test/text/text_embedder/MPPTextEmbedderTests.m @@ -29,9 +29,7 @@ static const float kSimilarityDiffTolerance = 1e-4; XCTAssertNotNil(error); \ XCTAssertEqualObjects(error.domain, expectedError.domain); \ XCTAssertEqual(error.code, expectedError.code); \ - XCTAssertNotEqual( \ - [error.localizedDescription rangeOfString:expectedError.localizedDescription].location, \ - NSNotFound) + XCTAssertEqualObjects(error.localizedDescription, expectedError.localizedDescription) \ #define AssertTextEmbedderResultHasOneEmbedding(textEmbedderResult) \ XCTAssertNotNil(textEmbedderResult); \ diff --git a/mediapipe/tasks/ios/test/vision/image_classifier/MPPImageClassifierTests.m b/mediapipe/tasks/ios/test/vision/image_classifier/MPPImageClassifierTests.m index 8db71a11b..62cfb1f84 100644 --- a/mediapipe/tasks/ios/test/vision/image_classifier/MPPImageClassifierTests.m +++ b/mediapipe/tasks/ios/test/vision/image_classifier/MPPImageClassifierTests.m @@ -34,10 +34,8 @@ static NSString *const kLiveStreamTestsDictExpectationKey = @"expectation"; XCTAssertNotNil(error); \ XCTAssertEqualObjects(error.domain, expectedError.domain); \ XCTAssertEqual(error.code, expectedError.code); \ - XCTAssertNotEqual( \ - [error.localizedDescription rangeOfString:expectedError.localizedDescription].location, \ - NSNotFound) - + XCTAssertEqualObjects(error.localizedDescription, expectedError.localizedDescription) \ + #define AssertEqualCategoryArrays(categories, expectedCategories) \ XCTAssertEqual(categories.count, expectedCategories.count); \ for (int i = 0; i < categories.count; i++) { \ diff --git a/mediapipe/tasks/ios/test/vision/object_detector/MPPObjectDetectorTests.m b/mediapipe/tasks/ios/test/vision/object_detector/MPPObjectDetectorTests.m index 164159ed6..c438a789a 100644 --- a/mediapipe/tasks/ios/test/vision/object_detector/MPPObjectDetectorTests.m +++ b/mediapipe/tasks/ios/test/vision/object_detector/MPPObjectDetectorTests.m @@ -32,9 +32,7 @@ static NSString *const kLiveStreamTestsDictExpectationKey = @"expectation"; XCTAssertNotNil(error); \ XCTAssertEqualObjects(error.domain, expectedError.domain); \ XCTAssertEqual(error.code, expectedError.code); \ - XCTAssertNotEqual( \ - [error.localizedDescription rangeOfString:expectedError.localizedDescription].location, \ - NSNotFound) + XCTAssertEqualObjects(error.localizedDescription, expectedError.localizedDescription) #define AssertEqualCategories(category, expectedCategory, detectionIndex, categoryIndex) \ XCTAssertEqual(category.index, expectedCategory.index, \ From 3eb97ae1ff13660ef4a1110378075f3b7268b26b Mon Sep 17 00:00:00 2001 From: Prianka Liz Kariat Date: Tue, 23 May 2023 20:54:42 +0530 Subject: [PATCH 2/2] Updated Image classifier result to return empty results if packet can't be validated. --- .../sources/MPPImageClassifierResult+Helpers.mm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mediapipe/tasks/ios/vision/image_classifier/utils/sources/MPPImageClassifierResult+Helpers.mm b/mediapipe/tasks/ios/vision/image_classifier/utils/sources/MPPImageClassifierResult+Helpers.mm index 61ae785d1..e9f74a0cd 100644 --- a/mediapipe/tasks/ios/vision/image_classifier/utils/sources/MPPImageClassifierResult+Helpers.mm +++ b/mediapipe/tasks/ios/vision/image_classifier/utils/sources/MPPImageClassifierResult+Helpers.mm @@ -29,13 +29,20 @@ using ::mediapipe::Packet; + (nullable MPPImageClassifierResult *)imageClassifierResultWithClassificationsPacket: (const Packet &)packet { - MPPClassificationResult *classificationResult; + // Even if packet does not validate a the expected type, you can safely access the timestamp. + NSInteger timestampInMilliSeconds = + (NSInteger)(packet.Timestamp().Value() / kMicroSecondsPerMilliSecond); if (!packet.ValidateAsType().ok()) { - return nil; + // MPPClassificationResult's timestamp is populated from timestamp `ClassificationResultProto`'s + // timestamp_ms(). It is 0 since the packet can't be validated as a `ClassificationResultProto`. + return [[MPPImageClassifierResult alloc] + initWithClassificationResult:[[MPPClassificationResult alloc] initWithClassifications:@[] + timestampInMilliseconds:0] + timestampInMilliseconds:timestampInMilliSeconds]; } - classificationResult = [MPPClassificationResult + MPPClassificationResult *classificationResult = [MPPClassificationResult classificationResultWithProto:packet.Get()]; return [[MPPImageClassifierResult alloc]