Skip to content

Commit

Permalink
Merge pull request #4802 from priankakariatyml:ios-image-segmenter-ba…
Browse files Browse the repository at this point in the history
…sic-tests

PiperOrigin-RevId: 565797057
  • Loading branch information
copybara-github committed Sep 15, 2023
2 parents 838c89a + 0f511d5 commit d5fa4a1
Show file tree
Hide file tree
Showing 11 changed files with 605 additions and 6 deletions.
24 changes: 24 additions & 0 deletions mediapipe/tasks/ios/test/utils/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2023 The MediaPipe Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

objc_library(
name = "MPPFileInfo",
srcs = ["sources/MPPFileInfo.m"],
hdrs = ["sources/MPPFileInfo.h"],
module_name = "MPPFileInfo",
)
42 changes: 42 additions & 0 deletions mediapipe/tasks/ios/test/utils/sources/MPPFileInfo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Copyright 2023 The MediaPipe Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface MPPFileInfo : NSObject

/** The name of the file. */
@property(nonatomic, readonly) NSString *name;

/** The type of the file. */
@property(nonatomic, readonly) NSString *type;

/** The path to file in the app bundle. */
@property(nonatomic, readonly, nullable) NSString *path;

/**
* Initializes an `MPPFileInfo` using the given name and type of file.
*
* @param name The name of the file.
* @param type The type of the file.
*
* @return The `MPPFileInfo` with the given name and type of file.
*/
- (instancetype)initWithName:(NSString *)name type:(NSString *)type;

@end

NS_ASSUME_NONNULL_END
33 changes: 33 additions & 0 deletions mediapipe/tasks/ios/test/utils/sources/MPPFileInfo.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright 2023 The TensorFlow Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#import "mediapipe/tasks/ios/test/utils/sources/MPPFileInfo.h"

@implementation MPPFileInfo

- (instancetype)initWithName:(NSString *)name type:(NSString *)type {
self = [super init];
if (self) {
_name = name;
_type = type;
}

return self;
}

- (NSString *)path {
return [[NSBundle bundleForClass:self.class] pathForResource:self.name ofType:self.type];
}

@end
76 changes: 76 additions & 0 deletions mediapipe/tasks/ios/test/vision/image_segmenter/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Copyright 2023 The MediaPipe Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load(
"//mediapipe/framework/tool:ios.bzl",
"MPP_TASK_MINIMUM_OS_VERSION",
)
load(
"@org_tensorflow//tensorflow/lite:special_rules.bzl",
"tflite_ios_lab_runner",
)
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

# Default tags for filtering iOS targets. Targets are restricted to Apple platforms.
TFL_DEFAULT_TAGS = [
"apple",
]

# Following sanitizer tests are not supported by iOS test targets.
TFL_DISABLED_SANITIZER_TAGS = [
"noasan",
"nomsan",
"notsan",
]

objc_library(
name = "MPPImageSegmenterObjcTestLibrary",
testonly = 1,
srcs = ["MPPImageSegmenterTests.mm"],
copts = [
"-ObjC++",
"-std=c++17",
"-x objective-c++",
],
data = [
"//mediapipe/tasks/testdata/vision:test_images",
"//mediapipe/tasks/testdata/vision:test_models",
"//mediapipe/tasks/testdata/vision:test_protos",
],
deps = [
"//mediapipe/tasks/ios/test/vision/utils:MPPImageTestUtils",
"//mediapipe/tasks/ios/test/vision/utils:MPPMaskTestUtils",
"//mediapipe/tasks/ios/vision/image_segmenter:MPPImageSegmenter",
"//mediapipe/tasks/ios/vision/image_segmenter:MPPImageSegmenterResult",
] + select({
"//third_party:opencv_ios_sim_arm64_source_build": ["@ios_opencv_source//:opencv_xcframework"],
"//third_party:opencv_ios_arm64_source_build": ["@ios_opencv_source//:opencv_xcframework"],
"//third_party:opencv_ios_x86_64_source_build": ["@ios_opencv_source//:opencv_xcframework"],
"//conditions:default": ["@ios_opencv//:OpencvFramework"],
}),
)

ios_unit_test(
name = "MPPImageSegmenterObjcTest",
minimum_os_version = MPP_TASK_MINIMUM_OS_VERSION,
runner = tflite_ios_lab_runner("IOS_LATEST"),
tags = TFL_DEFAULT_TAGS + TFL_DISABLED_SANITIZER_TAGS,
deps = [
":MPPImageSegmenterObjcTestLibrary",
],
)
Loading

0 comments on commit d5fa4a1

Please sign in to comment.