Commit 4d875278 authored by Thomas Van Lenten's avatar Thomas Van Lenten Committed by GitHub

Merge pull request #2218 from thomasvl/xcode8_updates

Update the ObjC projects for Xcode 8
parents 350d4944 297449aa
...@@ -8,7 +8,7 @@ language: cpp ...@@ -8,7 +8,7 @@ language: cpp
os: os:
- osx - osx
# The Objective C build needs Xcode 7.0 or later. # The Objective C build needs Xcode 7.0 or later.
osx_image: xcode7.3 osx_image: xcode8
script: script:
- ./tests.sh $CONFIG - ./tests.sh $CONFIG
env: env:
......
...@@ -228,34 +228,23 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then ...@@ -228,34 +228,23 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then
# NOTE: Different Xcode have different simulated hardware/os support. # NOTE: Different Xcode have different simulated hardware/os support.
readonly XCODE_VERSION_LINE="$(xcodebuild -version | grep Xcode\ )" readonly XCODE_VERSION_LINE="$(xcodebuild -version | grep Xcode\ )"
readonly XCODE_VERSION="${XCODE_VERSION_LINE/Xcode /}" # drop the prefix. readonly XCODE_VERSION="${XCODE_VERSION_LINE/Xcode /}" # drop the prefix.
IOS_SIMULATOR_NAME="Simulator"
case "${XCODE_VERSION}" in case "${XCODE_VERSION}" in
6.* ) 6.* )
echo "ERROR: Xcode 6.3/6.4 no longer supported for building, please use 7.0 or higher." 1>&2 echo "ERROR: Xcode 6.3/6.4 no longer supported for building, please use 8.0 or higher." 1>&2
exit 10 exit 10
;; ;;
7.1* ) 7.* )
XCODEBUILD_TEST_BASE_IOS+=( echo "ERROR: The unittests include Swift code that is now Swift 3.0." 1>&2
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit echo "ERROR: Xcode 8.0 or higher is required to build the test suite, but the library works with Xcode 7.x." 1>&2
-destination "platform=iOS Simulator,name=iPhone 6,OS=9.0" # 64bit exit 11
-destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPad Air,OS=9.0" # 64bit
)
;; ;;
7.2* ) 8.0* )
# The 8.* device seem to hang and never start under Xcode 8.
XCODEBUILD_TEST_BASE_IOS+=( XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit -destination "platform=iOS Simulator,name=iPhone 4s,OS=9.0" # 32bit
-destination "platform=iOS Simulator,name=iPhone 6,OS=9.2" # 64bit -destination "platform=iOS Simulator,name=iPhone 7,OS=10.0" # 64bit
-destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit -destination "platform=iOS Simulator,name=iPad 2,OS=9.0" # 32bit
-destination "platform=iOS Simulator,name=iPad Air,OS=9.2" # 64bit -destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.0" # 64bit
)
;;
7.3* )
XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" # 64bit
-destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPad Air,OS=9.3" # 64bit
) )
;; ;;
* ) * )
...@@ -272,7 +261,7 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then ...@@ -272,7 +261,7 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then
"${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Release test "${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Release test
fi fi
# Don't leave the simulator in the developer's face. # Don't leave the simulator in the developer's face.
killall "${IOS_SIMULATOR_NAME}" killall Simulator
fi fi
if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then
XCODEBUILD_TEST_BASE_OSX=( XCODEBUILD_TEST_BASE_OSX=(
...@@ -282,6 +271,19 @@ if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then ...@@ -282,6 +271,19 @@ if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then
# Since the ObjC 2.0 Runtime is required, 32bit OS X isn't supported. # Since the ObjC 2.0 Runtime is required, 32bit OS X isn't supported.
-destination "platform=OS X,arch=x86_64" # 64bit -destination "platform=OS X,arch=x86_64" # 64bit
) )
readonly XCODE_VERSION_LINE="$(xcodebuild -version | grep Xcode\ )"
readonly XCODE_VERSION="${XCODE_VERSION_LINE/Xcode /}" # drop the prefix.
case "${XCODE_VERSION}" in
6.* )
echo "ERROR: Xcode 6.3/6.4 no longer supported for building, please use 8.0 or higher." 1>&2
exit 10
;;
7.* )
echo "ERROR: The unittests include Swift code that is now Swift 3.0." 1>&2
echo "ERROR: Xcode 8.0 or higher is required to build the test suite, but the library works with Xcode 7.x." 1>&2
exit 11
;;
esac
if [[ "${DO_XCODE_DEBUG}" == "yes" ]] ; then if [[ "${DO_XCODE_DEBUG}" == "yes" ]] ; then
header "Doing Xcode OS X build/tests - Debug" header "Doing Xcode OS X build/tests - Debug"
"${XCODEBUILD_TEST_BASE_OSX[@]}" -configuration Debug test "${XCODEBUILD_TEST_BASE_OSX[@]}" -configuration Debug test
......
...@@ -556,9 +556,10 @@ ...@@ -556,9 +556,10 @@
attributes = { attributes = {
LastSwiftUpdateCheck = 0710; LastSwiftUpdateCheck = 0710;
LastTestingUpgradeCheck = 0600; LastTestingUpgradeCheck = 0600;
LastUpgradeCheck = 0710; LastUpgradeCheck = 0800;
TargetAttributes = { TargetAttributes = {
8BBEA4A5147C727100C4ADB7 = { 8BBEA4A5147C727100C4ADB7 = {
LastSwiftMigration = 0800;
TestTargetID = 8B9A5EA41831993600A9D33B; TestTargetID = 8B9A5EA41831993600A9D33B;
}; };
F45BBC141B0CE3C6002D064D = { F45BBC141B0CE3C6002D064D = {
...@@ -740,6 +741,7 @@ ...@@ -740,6 +741,7 @@
PRODUCT_NAME = UnitTests; PRODUCT_NAME = UnitTests;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
WARNING_CFLAGS = ( WARNING_CFLAGS = (
"$(inherited)", "$(inherited)",
"-Wno-documentation-unknown-command", "-Wno-documentation-unknown-command",
...@@ -764,6 +766,7 @@ ...@@ -764,6 +766,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:identifier}";
PRODUCT_NAME = UnitTests; PRODUCT_NAME = UnitTests;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
SWIFT_VERSION = 3.0;
WARNING_CFLAGS = ( WARNING_CFLAGS = (
"$(inherited)", "$(inherited)",
"-Wno-documentation-unknown-command", "-Wno-documentation-unknown-command",
...@@ -785,16 +788,21 @@ ...@@ -785,16 +788,21 @@
CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_ASSIGN_ENUM = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99; GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
...@@ -846,16 +854,21 @@ ...@@ -846,16 +854,21 @@
CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_ASSIGN_ENUM = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99; GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = YES;
...@@ -881,6 +894,7 @@ ...@@ -881,6 +894,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.9; MACOSX_DEPLOYMENT_TARGET = 10.9;
RUN_CLANG_STATIC_ANALYZER = YES; RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
WARNING_CFLAGS = ( WARNING_CFLAGS = (
"-Wdocumentation-unknown-command", "-Wdocumentation-unknown-command",
"-Wundef", "-Wundef",
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0710" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0710" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
...@@ -633,9 +633,10 @@ ...@@ -633,9 +633,10 @@
attributes = { attributes = {
LastSwiftUpdateCheck = 0710; LastSwiftUpdateCheck = 0710;
LastTestingUpgradeCheck = 0600; LastTestingUpgradeCheck = 0600;
LastUpgradeCheck = 0710; LastUpgradeCheck = 0800;
TargetAttributes = { TargetAttributes = {
8BBEA4A5147C727100C4ADB7 = { 8BBEA4A5147C727100C4ADB7 = {
LastSwiftMigration = 0800;
TestTargetID = 8B9A5EA41831993600A9D33B; TestTargetID = 8B9A5EA41831993600A9D33B;
}; };
F45BBC0E1B0CDB50002D064D = { F45BBC0E1B0CDB50002D064D = {
...@@ -843,7 +844,7 @@ ...@@ -843,7 +844,7 @@
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
INFOPLIST_FILE = "$(SRCROOT)/Tests/iOSTestHarness/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/Tests/iOSTestHarness/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
...@@ -858,7 +859,7 @@ ...@@ -858,7 +859,7 @@
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
INFOPLIST_FILE = "$(SRCROOT)/Tests/iOSTestHarness/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/Tests/iOSTestHarness/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
...@@ -880,7 +881,7 @@ ...@@ -880,7 +881,7 @@
"$(SRCROOT)", "$(SRCROOT)",
); );
INFOPLIST_FILE = "Tests/UnitTests-Info.plist"; INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
...@@ -890,6 +891,7 @@ ...@@ -890,6 +891,7 @@
PRODUCT_NAME = UnitTests; PRODUCT_NAME = UnitTests;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTestHarness.app/iOSTestHarness"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTestHarness.app/iOSTestHarness";
WARNING_CFLAGS = ( WARNING_CFLAGS = (
...@@ -915,7 +917,7 @@ ...@@ -915,7 +917,7 @@
"$(SRCROOT)", "$(SRCROOT)",
); );
INFOPLIST_FILE = "Tests/UnitTests-Info.plist"; INFOPLIST_FILE = "Tests/UnitTests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 7.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
...@@ -924,6 +926,7 @@ ...@@ -924,6 +926,7 @@
OTHER_LDFLAGS = "-ObjC"; OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = UnitTests; PRODUCT_NAME = UnitTests;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Tests/UnitTests-Bridging-Header.h";
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTestHarness.app/iOSTestHarness"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTestHarness.app/iOSTestHarness";
WARNING_CFLAGS = ( WARNING_CFLAGS = (
...@@ -947,17 +950,22 @@ ...@@ -947,17 +950,22 @@
CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_ASSIGN_ENUM = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99; GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
...@@ -982,7 +990,7 @@ ...@@ -982,7 +990,7 @@
GCC_WARN_UNUSED_PARAMETER = YES; GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
GENERATE_PROFILING_CODE = NO; GENERATE_PROFILING_CODE = NO;
IPHONEOS_DEPLOYMENT_TARGET = 6.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
RUN_CLANG_STATIC_ANALYZER = YES; RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
...@@ -1009,17 +1017,22 @@ ...@@ -1009,17 +1017,22 @@
CLANG_WARN_ASSIGN_ENUM = YES; CLANG_WARN_ASSIGN_ENUM = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES;
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES_AGGRESSIVE;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99; GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES; GCC_TREAT_WARNINGS_AS_ERRORS = YES;
...@@ -1042,9 +1055,10 @@ ...@@ -1042,9 +1055,10 @@
GCC_WARN_UNUSED_PARAMETER = YES; GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
GENERATE_PROFILING_CODE = NO; GENERATE_PROFILING_CODE = NO;
IPHONEOS_DEPLOYMENT_TARGET = 6.1; IPHONEOS_DEPLOYMENT_TARGET = 8.0;
RUN_CLANG_STATIC_ANALYZER = YES; RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
WARNING_CFLAGS = ( WARNING_CFLAGS = (
"-Wdocumentation-unknown-command", "-Wdocumentation-unknown-command",
"-Wundef", "-Wundef",
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0710" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0710" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
...@@ -42,23 +42,23 @@ class GPBBridgeTests: XCTestCase { ...@@ -42,23 +42,23 @@ class GPBBridgeTests: XCTestCase {
msg.optionalInt32 = 100 msg.optionalInt32 = 100
msg.optionalString = "abc" msg.optionalString = "abc"
msg.optionalEnum = .Bar msg.optionalEnum = .bar
msg2.optionalString = "other" msg2.optionalString = "other"
msg.optionalMessage = msg2 msg.optional = msg2
msg3.a = 200 msg3.a = 200
msg.optionalGroup = msg3 msg.optionalGroup = msg3
msg.repeatedInt32Array.addValue(300) msg.repeatedInt32Array.addValue(300)
msg.repeatedInt32Array.addValue(301) msg.repeatedInt32Array.addValue(301)
msg.repeatedStringArray.addObject("mno") msg.repeatedStringArray.add("mno")
msg.repeatedStringArray.addObject("pqr") msg.repeatedStringArray.add("pqr")
msg.repeatedEnumArray.addValue(Message2_Enum.Bar.rawValue) msg.repeatedEnumArray.addValue(Message2_Enum.bar.rawValue)
msg.repeatedEnumArray.addValue(Message2_Enum.Baz.rawValue) msg.repeatedEnumArray.addValue(Message2_Enum.baz.rawValue)
msg.mapInt32Int32.setInt32(400, forKey:500) msg.mapInt32Int32.setInt32(400, forKey:500)
msg.mapInt32Int32.setInt32(401, forKey:501) msg.mapInt32Int32.setInt32(401, forKey:501)
msg.mapStringString.setObject("foo", forKey:"bar") msg.mapStringString.setObject("foo", forKey:"bar" as NSString)
msg.mapStringString.setObject("abc", forKey:"xyz") msg.mapStringString.setObject("abc", forKey:"xyz" as NSString)
msg.mapInt32Enum.setEnum(Message2_Enum.Bar.rawValue, forKey:600) msg.mapInt32Enum.setEnum(Message2_Enum.bar.rawValue, forKey:600)
msg.mapInt32Enum.setEnum(Message2_Enum.Baz.rawValue, forKey:601) msg.mapInt32Enum.setEnum(Message2_Enum.baz.rawValue, forKey:601)
// Check has*. // Check has*.
XCTAssertTrue(msg.hasOptionalInt32) XCTAssertTrue(msg.hasOptionalInt32)
...@@ -75,19 +75,19 @@ class GPBBridgeTests: XCTestCase { ...@@ -75,19 +75,19 @@ class GPBBridgeTests: XCTestCase {
XCTAssertEqual(msg.optionalInt32, Int32(100)) XCTAssertEqual(msg.optionalInt32, Int32(100))
XCTAssertEqual(msg.optionalString, "abc") XCTAssertEqual(msg.optionalString, "abc")
XCTAssertEqual(msg2.optionalString, "other") XCTAssertEqual(msg2.optionalString, "other")
XCTAssertTrue(msg.optionalMessage === msg2) XCTAssertTrue(msg.optional === msg2)
XCTAssertEqual(msg.optionalEnum, Message2_Enum.Bar) XCTAssertEqual(msg.optionalEnum, Message2_Enum.bar)
XCTAssertEqual(msg3.a, Int32(200)) XCTAssertEqual(msg3.a, Int32(200))
XCTAssertTrue(msg.optionalGroup === msg3) XCTAssertTrue(msg.optionalGroup === msg3)
XCTAssertEqual(msg.repeatedInt32Array.count, UInt(2)) XCTAssertEqual(msg.repeatedInt32Array.count, UInt(2))
XCTAssertEqual(msg.repeatedInt32Array.valueAtIndex(0), Int32(300)) XCTAssertEqual(msg.repeatedInt32Array.value(at: 0), Int32(300))
XCTAssertEqual(msg.repeatedInt32Array.valueAtIndex(1), Int32(301)) XCTAssertEqual(msg.repeatedInt32Array.value(at: 1), Int32(301))
XCTAssertEqual(msg.repeatedStringArray.count, Int(2)) XCTAssertEqual(msg.repeatedStringArray.count, Int(2))
XCTAssertEqual(msg.repeatedStringArray.objectAtIndex(0) as? String, "mno") XCTAssertEqual(msg.repeatedStringArray.object(at: 0) as? String, "mno")
XCTAssertEqual(msg.repeatedStringArray.objectAtIndex(1) as? String, "pqr") XCTAssertEqual(msg.repeatedStringArray.object(at: 1) as? String, "pqr")
XCTAssertEqual(msg.repeatedEnumArray.count, UInt(2)) XCTAssertEqual(msg.repeatedEnumArray.count, UInt(2))
XCTAssertEqual(msg.repeatedEnumArray.valueAtIndex(0), Message2_Enum.Bar.rawValue) XCTAssertEqual(msg.repeatedEnumArray.value(at: 0), Message2_Enum.bar.rawValue)
XCTAssertEqual(msg.repeatedEnumArray.valueAtIndex(1), Message2_Enum.Baz.rawValue) XCTAssertEqual(msg.repeatedEnumArray.value(at: 1), Message2_Enum.baz.rawValue)
XCTAssertEqual(msg.repeatedInt64Array.count, UInt(0)) XCTAssertEqual(msg.repeatedInt64Array.count, UInt(0))
XCTAssertEqual(msg.mapInt32Int32.count, UInt(2)) XCTAssertEqual(msg.mapInt32Int32.count, UInt(2))
var intValue: Int32 = 0 var intValue: Int32 = 0
...@@ -96,13 +96,13 @@ class GPBBridgeTests: XCTestCase { ...@@ -96,13 +96,13 @@ class GPBBridgeTests: XCTestCase {
XCTAssertTrue(msg.mapInt32Int32.getInt32(&intValue, forKey: 501)) XCTAssertTrue(msg.mapInt32Int32.getInt32(&intValue, forKey: 501))
XCTAssertEqual(intValue, Int32(401)) XCTAssertEqual(intValue, Int32(401))
XCTAssertEqual(msg.mapStringString.count, Int(2)) XCTAssertEqual(msg.mapStringString.count, Int(2))
XCTAssertEqual(msg.mapStringString.objectForKey("bar") as? String, "foo") XCTAssertEqual(msg.mapStringString.object(forKey: "bar") as? String, "foo")
XCTAssertEqual(msg.mapStringString.objectForKey("xyz") as? String, "abc") XCTAssertEqual(msg.mapStringString.object(forKey: "xyz") as? String, "abc")
XCTAssertEqual(msg.mapInt32Enum.count, UInt(2)) XCTAssertEqual(msg.mapInt32Enum.count, UInt(2))
XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:600)) XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:600))
XCTAssertEqual(intValue, Message2_Enum.Bar.rawValue) XCTAssertEqual(intValue, Message2_Enum.bar.rawValue)
XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:601)) XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:601))
XCTAssertEqual(intValue, Message2_Enum.Baz.rawValue) XCTAssertEqual(intValue, Message2_Enum.baz.rawValue)
// Clearing a string with nil. // Clearing a string with nil.
msg2.optionalString = nil msg2.optionalString = nil
...@@ -124,8 +124,8 @@ class GPBBridgeTests: XCTestCase { ...@@ -124,8 +124,8 @@ class GPBBridgeTests: XCTestCase {
XCTAssertFalse(msg.hasOptionalFloat) XCTAssertFalse(msg.hasOptionalFloat)
XCTAssertEqual(msg.optionalInt32, Int32(0)) XCTAssertEqual(msg.optionalInt32, Int32(0))
XCTAssertEqual(msg.optionalString, "") XCTAssertEqual(msg.optionalString, "")
XCTAssertTrue(msg.optionalMessage !== msg2) // New instance XCTAssertTrue(msg.optional !== msg2) // New instance
XCTAssertEqual(msg.optionalEnum, Message2_Enum.Foo) // Default XCTAssertEqual(msg.optionalEnum, Message2_Enum.foo) // Default
XCTAssertEqual(msg.repeatedInt32Array.count, UInt(0)) XCTAssertEqual(msg.repeatedInt32Array.count, UInt(0))
XCTAssertEqual(msg.repeatedStringArray.count, Int(0)) XCTAssertEqual(msg.repeatedStringArray.count, Int(0))
XCTAssertEqual(msg.repeatedEnumArray.count, UInt(0)) XCTAssertEqual(msg.repeatedEnumArray.count, UInt(0))
...@@ -140,22 +140,22 @@ class GPBBridgeTests: XCTestCase { ...@@ -140,22 +140,22 @@ class GPBBridgeTests: XCTestCase {
msg.optionalInt32 = 100 msg.optionalInt32 = 100
msg.optionalString = "abc" msg.optionalString = "abc"
msg.optionalEnum = .Bar msg.optionalEnum = .bar
msg2.optionalString = "other" msg2.optionalString = "other"
msg.optionalMessage = msg2 msg.optional = msg2
msg.repeatedInt32Array.addValue(300) msg.repeatedInt32Array.addValue(300)
msg.repeatedInt32Array.addValue(301) msg.repeatedInt32Array.addValue(301)
msg.repeatedStringArray.addObject("mno") msg.repeatedStringArray.add("mno")
msg.repeatedStringArray.addObject("pqr") msg.repeatedStringArray.add("pqr")
// "proto3" syntax lets enum get unknown values. // "proto3" syntax lets enum get unknown values.
msg.repeatedEnumArray.addValue(Message3_Enum.Bar.rawValue) msg.repeatedEnumArray.addValue(Message3_Enum.bar.rawValue)
msg.repeatedEnumArray.addRawValue(666) msg.repeatedEnumArray.addRawValue(666)
SetMessage3_OptionalEnum_RawValue(msg2, 666) SetMessage3_OptionalEnum_RawValue(msg2, 666)
msg.mapInt32Int32.setInt32(400, forKey:500) msg.mapInt32Int32.setInt32(400, forKey:500)
msg.mapInt32Int32.setInt32(401, forKey:501) msg.mapInt32Int32.setInt32(401, forKey:501)
msg.mapStringString.setObject("foo", forKey:"bar") msg.mapStringString.setObject("foo", forKey:"bar" as NSString)
msg.mapStringString.setObject("abc", forKey:"xyz") msg.mapStringString.setObject("abc", forKey:"xyz" as NSString)
msg.mapInt32Enum.setEnum(Message2_Enum.Bar.rawValue, forKey:600) msg.mapInt32Enum.setEnum(Message2_Enum.bar.rawValue, forKey:600)
// "proto3" syntax lets enum get unknown values. // "proto3" syntax lets enum get unknown values.
msg.mapInt32Enum.setRawValue(666, forKey:601) msg.mapInt32Enum.setRawValue(666, forKey:601)
...@@ -167,20 +167,20 @@ class GPBBridgeTests: XCTestCase { ...@@ -167,20 +167,20 @@ class GPBBridgeTests: XCTestCase {
XCTAssertEqual(msg.optionalInt32, Int32(100)) XCTAssertEqual(msg.optionalInt32, Int32(100))
XCTAssertEqual(msg.optionalString, "abc") XCTAssertEqual(msg.optionalString, "abc")
XCTAssertEqual(msg2.optionalString, "other") XCTAssertEqual(msg2.optionalString, "other")
XCTAssertTrue(msg.optionalMessage === msg2) XCTAssertTrue(msg.optional === msg2)
XCTAssertEqual(msg.optionalEnum, Message3_Enum.Bar) XCTAssertEqual(msg.optionalEnum, Message3_Enum.bar)
XCTAssertEqual(msg.repeatedInt32Array.count, UInt(2)) XCTAssertEqual(msg.repeatedInt32Array.count, UInt(2))
XCTAssertEqual(msg.repeatedInt32Array.valueAtIndex(0), Int32(300)) XCTAssertEqual(msg.repeatedInt32Array.value(at: 0), Int32(300))
XCTAssertEqual(msg.repeatedInt32Array.valueAtIndex(1), Int32(301)) XCTAssertEqual(msg.repeatedInt32Array.value(at: 1), Int32(301))
XCTAssertEqual(msg.repeatedStringArray.count, Int(2)) XCTAssertEqual(msg.repeatedStringArray.count, Int(2))
XCTAssertEqual(msg.repeatedStringArray.objectAtIndex(0) as? String, "mno") XCTAssertEqual(msg.repeatedStringArray.object(at: 0) as? String, "mno")
XCTAssertEqual(msg.repeatedStringArray.objectAtIndex(1) as? String, "pqr") XCTAssertEqual(msg.repeatedStringArray.object(at: 1) as? String, "pqr")
XCTAssertEqual(msg.repeatedInt64Array.count, UInt(0)) XCTAssertEqual(msg.repeatedInt64Array.count, UInt(0))
XCTAssertEqual(msg.repeatedEnumArray.count, UInt(2)) XCTAssertEqual(msg.repeatedEnumArray.count, UInt(2))
XCTAssertEqual(msg.repeatedEnumArray.valueAtIndex(0), Message3_Enum.Bar.rawValue) XCTAssertEqual(msg.repeatedEnumArray.value(at: 0), Message3_Enum.bar.rawValue)
XCTAssertEqual(msg.repeatedEnumArray.valueAtIndex(1), Message3_Enum.GPBUnrecognizedEnumeratorValue.rawValue) XCTAssertEqual(msg.repeatedEnumArray.value(at: 1), Message3_Enum.gpbUnrecognizedEnumeratorValue.rawValue)
XCTAssertEqual(msg.repeatedEnumArray.rawValueAtIndex(1), 666) XCTAssertEqual(msg.repeatedEnumArray.rawValue(at: 1), 666)
XCTAssertEqual(msg2.optionalEnum, Message3_Enum.GPBUnrecognizedEnumeratorValue) XCTAssertEqual(msg2.optionalEnum, Message3_Enum.gpbUnrecognizedEnumeratorValue)
XCTAssertEqual(Message3_OptionalEnum_RawValue(msg2), Int32(666)) XCTAssertEqual(Message3_OptionalEnum_RawValue(msg2), Int32(666))
XCTAssertEqual(msg.mapInt32Int32.count, UInt(2)) XCTAssertEqual(msg.mapInt32Int32.count, UInt(2))
var intValue: Int32 = 0 var intValue: Int32 = 0
...@@ -189,13 +189,13 @@ class GPBBridgeTests: XCTestCase { ...@@ -189,13 +189,13 @@ class GPBBridgeTests: XCTestCase {
XCTAssertTrue(msg.mapInt32Int32.getInt32(&intValue, forKey:501)) XCTAssertTrue(msg.mapInt32Int32.getInt32(&intValue, forKey:501))
XCTAssertEqual(intValue, Int32(401)) XCTAssertEqual(intValue, Int32(401))
XCTAssertEqual(msg.mapStringString.count, Int(2)) XCTAssertEqual(msg.mapStringString.count, Int(2))
XCTAssertEqual(msg.mapStringString.objectForKey("bar") as? String, "foo") XCTAssertEqual(msg.mapStringString.object(forKey: "bar") as? String, "foo")
XCTAssertEqual(msg.mapStringString.objectForKey("xyz") as? String, "abc") XCTAssertEqual(msg.mapStringString.object(forKey: "xyz") as? String, "abc")
XCTAssertEqual(msg.mapInt32Enum.count, UInt(2)) XCTAssertEqual(msg.mapInt32Enum.count, UInt(2))
XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:600)) XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:600))
XCTAssertEqual(intValue, Message2_Enum.Bar.rawValue) XCTAssertEqual(intValue, Message2_Enum.bar.rawValue)
XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:601)) XCTAssertTrue(msg.mapInt32Enum.getEnum(&intValue, forKey:601))
XCTAssertEqual(intValue, Message3_Enum.GPBUnrecognizedEnumeratorValue.rawValue) XCTAssertEqual(intValue, Message3_Enum.gpbUnrecognizedEnumeratorValue.rawValue)
XCTAssertTrue(msg.mapInt32Enum.getRawValue(&intValue, forKey:601)) XCTAssertTrue(msg.mapInt32Enum.getRawValue(&intValue, forKey:601))
XCTAssertEqual(intValue, 666) XCTAssertEqual(intValue, 666)
...@@ -204,23 +204,23 @@ class GPBBridgeTests: XCTestCase { ...@@ -204,23 +204,23 @@ class GPBBridgeTests: XCTestCase {
XCTAssertEqual(msg2.optionalString, "") XCTAssertEqual(msg2.optionalString, "")
// Clearing a message with nil. // Clearing a message with nil.
msg.optionalMessage = nil msg.optional = nil
XCTAssertFalse(msg.hasOptionalMessage) XCTAssertFalse(msg.hasOptionalMessage)
XCTAssertTrue(msg.optionalMessage !== msg2) // New instance XCTAssertTrue(msg.optional !== msg2) // New instance
// Clear. // Clear.
msg.clear() msg.clear()
XCTAssertFalse(msg.hasOptionalMessage) XCTAssertFalse(msg.hasOptionalMessage)
XCTAssertEqual(msg.optionalInt32, Int32(0)) XCTAssertEqual(msg.optionalInt32, Int32(0))
XCTAssertEqual(msg.optionalString, "") XCTAssertEqual(msg.optionalString, "")
XCTAssertTrue(msg.optionalMessage !== msg2) // New instance XCTAssertTrue(msg.optional !== msg2) // New instance
XCTAssertEqual(msg.optionalEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.optionalEnum, Message3_Enum.foo) // Default
XCTAssertEqual(msg.repeatedInt32Array.count, UInt(0)) XCTAssertEqual(msg.repeatedInt32Array.count, UInt(0))
XCTAssertEqual(msg.repeatedStringArray.count, Int(0)) XCTAssertEqual(msg.repeatedStringArray.count, Int(0))
XCTAssertEqual(msg.repeatedEnumArray.count, UInt(0)) XCTAssertEqual(msg.repeatedEnumArray.count, UInt(0))
msg2.clear() msg2.clear()
XCTAssertEqual(msg2.optionalEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg2.optionalEnum, Message3_Enum.foo) // Default
XCTAssertEqual(Message3_OptionalEnum_RawValue(msg2), Message3_Enum.Foo.rawValue) XCTAssertEqual(Message3_OptionalEnum_RawValue(msg2), Message3_Enum.foo.rawValue)
XCTAssertEqual(msg.mapInt32Int32.count, UInt(0)) XCTAssertEqual(msg.mapInt32Int32.count, UInt(0))
XCTAssertEqual(msg.mapStringString.count, Int(0)) XCTAssertEqual(msg.mapStringString.count, Int(0))
XCTAssertEqual(msg.mapInt32Enum.count, UInt(0)) XCTAssertEqual(msg.mapInt32Enum.count, UInt(0))
...@@ -234,201 +234,201 @@ class GPBBridgeTests: XCTestCase { ...@@ -234,201 +234,201 @@ class GPBBridgeTests: XCTestCase {
// Access shouldn't result in has* but should return objects. // Access shouldn't result in has* but should return objects.
let msg2 = msg.optionalGroup let msg2 = msg.optionalGroup
let msg3 = msg.optionalMessage.optionalMessage let msg3 = msg.optional.optional
let msg4 = msg.optionalMessage let msg4 = msg.optional
XCTAssertNotNil(msg2) XCTAssertNotNil(msg2)
XCTAssertNotNil(msg3) XCTAssertNotNil(msg3)
XCTAssertFalse(msg.hasOptionalGroup) XCTAssertFalse(msg.hasOptionalGroup)
XCTAssertFalse(msg.optionalMessage.hasOptionalMessage) XCTAssertFalse(msg.optional.hasOptionalMessage)
XCTAssertFalse(msg.hasOptionalMessage) XCTAssertFalse(msg.hasOptionalMessage)
// Setting things should trigger has* getting set. // Setting things should trigger has* getting set.
msg.optionalGroup.a = 10 msg.optionalGroup.a = 10
msg.optionalMessage.optionalMessage.optionalInt32 = 100 msg.optional.optional.optionalInt32 = 100
XCTAssertTrue(msg.hasOptionalGroup) XCTAssertTrue(msg.hasOptionalGroup)
XCTAssertTrue(msg.optionalMessage.hasOptionalMessage) XCTAssertTrue(msg.optional.hasOptionalMessage)
XCTAssertTrue(msg.hasOptionalMessage) XCTAssertTrue(msg.hasOptionalMessage)
// And they should be the same pointer as before. // And they should be the same pointer as before.
XCTAssertTrue(msg2 === msg.optionalGroup) XCTAssertTrue(msg2 === msg.optionalGroup)
XCTAssertTrue(msg3 === msg.optionalMessage.optionalMessage) XCTAssertTrue(msg3 === msg.optional.optional)
XCTAssertTrue(msg4 === msg.optionalMessage) XCTAssertTrue(msg4 === msg.optional)
// Clear gets us new objects next time around. // Clear gets us new objects next time around.
msg.clear() msg.clear()
XCTAssertFalse(msg.hasOptionalGroup) XCTAssertFalse(msg.hasOptionalGroup)
XCTAssertFalse(msg.optionalMessage.hasOptionalMessage) XCTAssertFalse(msg.optional.hasOptionalMessage)
XCTAssertFalse(msg.hasOptionalMessage) XCTAssertFalse(msg.hasOptionalMessage)
msg.optionalGroup.a = 20 msg.optionalGroup.a = 20
msg.optionalMessage.optionalMessage.optionalInt32 = 200 msg.optional.optional.optionalInt32 = 200
XCTAssertTrue(msg.hasOptionalGroup) XCTAssertTrue(msg.hasOptionalGroup)
XCTAssertTrue(msg.optionalMessage.hasOptionalMessage) XCTAssertTrue(msg.optional.hasOptionalMessage)
XCTAssertTrue(msg.hasOptionalMessage) XCTAssertTrue(msg.hasOptionalMessage)
XCTAssertTrue(msg2 !== msg.optionalGroup) XCTAssertTrue(msg2 !== msg.optionalGroup)
XCTAssertTrue(msg3 !== msg.optionalMessage.optionalMessage) XCTAssertTrue(msg3 !== msg.optional.optional)
XCTAssertTrue(msg4 !== msg.optionalMessage) XCTAssertTrue(msg4 !== msg.optional)
// Explicit set of a message, means autocreated object doesn't bind. // Explicit set of a message, means autocreated object doesn't bind.
msg.clear() msg.clear()
let autoCreated = msg.optionalMessage let autoCreated = msg.optional
XCTAssertFalse(msg.hasOptionalMessage) XCTAssertFalse(msg.hasOptionalMessage)
let msg5 = Message2() let msg5 = Message2()
msg5.optionalInt32 = 123 msg5.optionalInt32 = 123
msg.optionalMessage = msg5 msg.optional = msg5
XCTAssertTrue(msg.hasOptionalMessage) XCTAssertTrue(msg.hasOptionalMessage)
// Modifing the autocreated doesn't replaced the explicit set one. // Modifing the autocreated doesn't replaced the explicit set one.
autoCreated.optionalInt32 = 456 autoCreated?.optionalInt32 = 456
XCTAssertTrue(msg.hasOptionalMessage) XCTAssertTrue(msg.hasOptionalMessage)
XCTAssertTrue(msg.optionalMessage === msg5) XCTAssertTrue(msg.optional === msg5)
XCTAssertEqual(msg.optionalMessage.optionalInt32, Int32(123)) XCTAssertEqual(msg.optional.optionalInt32, Int32(123))
} }
func testProto2OneOfSupport() { func testProto2OneOfSupport() {
let msg = Message2() let msg = Message2()
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.gpbUnsetOneOfCase)
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Baz) // Default XCTAssertEqual(msg.oneofEnum, Message2_Enum.baz) // Default
let autoCreated = msg.oneofMessage // Default create one. let autoCreated = msg.oneof // Default create one.
XCTAssertNotNil(autoCreated) XCTAssertNotNil(autoCreated)
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.gpbUnsetOneOfCase)
msg.oneofInt32 = 10 msg.oneofInt32 = 10
XCTAssertEqual(msg.oneofInt32, Int32(10)) XCTAssertEqual(msg.oneofInt32, Int32(10))
XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Baz) // Default XCTAssertEqual(msg.oneofEnum, Message2_Enum.baz) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofInt32) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofInt32)
msg.oneofFloat = 20.0 msg.oneofFloat = 20.0
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oneofFloat, Float(20.0)) XCTAssertEqual(msg.oneofFloat, Float(20.0))
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Baz) // Default XCTAssertEqual(msg.oneofEnum, Message2_Enum.baz) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofFloat) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofFloat)
msg.oneofEnum = .Bar msg.oneofEnum = .bar
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Bar) XCTAssertEqual(msg.oneofEnum, Message2_Enum.bar)
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofEnum) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofEnum)
// Sets via the autocreated instance. // Sets via the autocreated instance.
msg.oneofMessage.optionalInt32 = 200 msg.oneof.optionalInt32 = 200
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Baz) // Default XCTAssertEqual(msg.oneofEnum, Message2_Enum.baz) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(200)) XCTAssertEqual(msg.oneof.optionalInt32, Int32(200))
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofMessage) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofMessage)
// Clear the oneof. // Clear the oneof.
Message2_ClearOOneOfCase(msg) Message2_ClearOOneOfCase(msg)
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(110.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message2_Enum.Baz) // Default XCTAssertEqual(msg.oneofEnum, Message2_Enum.baz) // Default
let autoCreated2 = msg.oneofMessage // Default create one let autoCreated2 = msg.oneof // Default create one
XCTAssertNotNil(autoCreated2) XCTAssertNotNil(autoCreated2)
XCTAssertTrue(autoCreated2 !== autoCreated) // New instance XCTAssertTrue(autoCreated2 !== autoCreated) // New instance
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(0)) // Default XCTAssertEqual(msg.oneof.optionalInt32, Int32(0)) // Default
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.gpbUnsetOneOfCase)
msg.oneofInt32 = 10 msg.oneofInt32 = 10
XCTAssertEqual(msg.oneofInt32, Int32(10)) XCTAssertEqual(msg.oneofInt32, Int32(10))
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofInt32) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofInt32)
// Confirm Message.clear() handles the oneof correctly. // Confirm Message.clear() handles the oneof correctly.
msg.clear() msg.clear()
XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default XCTAssertEqual(msg.oneofInt32, Int32(100)) // Default
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.gpbUnsetOneOfCase)
// Sets via the autocreated instance. // Sets via the autocreated instance.
msg.oneofMessage.optionalInt32 = 300 msg.oneof.optionalInt32 = 300
XCTAssertTrue(msg.oneofMessage !== autoCreated) // New instance XCTAssertTrue(msg.oneof !== autoCreated) // New instance
XCTAssertTrue(msg.oneofMessage !== autoCreated2) // New instance XCTAssertTrue(msg.oneof !== autoCreated2) // New instance
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(300)) XCTAssertEqual(msg.oneof.optionalInt32, Int32(300))
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.OneofMessage) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.oneofMessage)
// Set message to nil clears the oneof. // Set message to nil clears the oneof.
msg.oneofMessage = nil msg.oneof = nil
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(0)) // Default XCTAssertEqual(msg.oneof.optionalInt32, Int32(0)) // Default
XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message2_O_OneOfCase.gpbUnsetOneOfCase)
} }
func testProto3OneOfSupport() { func testProto3OneOfSupport() {
let msg = Message3() let msg = Message3()
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.gpbUnsetOneOfCase)
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.oneofEnum, Message3_Enum.foo) // Default
let autoCreated = msg.oneofMessage // Default create one. let autoCreated = msg.oneof // Default create one.
XCTAssertNotNil(autoCreated) XCTAssertNotNil(autoCreated)
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.gpbUnsetOneOfCase)
msg.oneofInt32 = 10 msg.oneofInt32 = 10
XCTAssertEqual(msg.oneofInt32, Int32(10)) XCTAssertEqual(msg.oneofInt32, Int32(10))
XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.oneofEnum, Message3_Enum.foo) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofInt32) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofInt32)
msg.oneofFloat = 20.0 msg.oneofFloat = 20.0
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oneofFloat, Float(20.0)) XCTAssertEqual(msg.oneofFloat, Float(20.0))
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.oneofEnum, Message3_Enum.foo) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofFloat) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofFloat)
msg.oneofEnum = .Bar msg.oneofEnum = .bar
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Bar) XCTAssertEqual(msg.oneofEnum, Message3_Enum.bar)
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofEnum) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofEnum)
// Sets via the autocreated instance. // Sets via the autocreated instance.
msg.oneofMessage.optionalInt32 = 200 msg.oneof.optionalInt32 = 200
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.oneofEnum, Message3_Enum.foo) // Default
XCTAssertTrue(msg.oneofMessage === autoCreated) // Still the same XCTAssertTrue(msg.oneof === autoCreated) // Still the same
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(200)) XCTAssertEqual(msg.oneof.optionalInt32, Int32(200))
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofMessage) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofMessage)
// Clear the oneof. // Clear the oneof.
Message3_ClearOOneOfCase(msg) Message3_ClearOOneOfCase(msg)
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default XCTAssertEqual(msg.oneofFloat, Float(0.0)) // Default
XCTAssertEqual(msg.oneofEnum, Message3_Enum.Foo) // Default XCTAssertEqual(msg.oneofEnum, Message3_Enum.foo) // Default
let autoCreated2 = msg.oneofMessage // Default create one let autoCreated2 = msg.oneof // Default create one
XCTAssertNotNil(autoCreated2) XCTAssertNotNil(autoCreated2)
XCTAssertTrue(autoCreated2 !== autoCreated) // New instance XCTAssertTrue(autoCreated2 !== autoCreated) // New instance
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(0)) // Default XCTAssertEqual(msg.oneof.optionalInt32, Int32(0)) // Default
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.gpbUnsetOneOfCase)
msg.oneofInt32 = 10 msg.oneofInt32 = 10
XCTAssertEqual(msg.oneofInt32, Int32(10)) XCTAssertEqual(msg.oneofInt32, Int32(10))
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofInt32) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofInt32)
// Confirm Message.clear() handles the oneof correctly. // Confirm Message.clear() handles the oneof correctly.
msg.clear() msg.clear()
XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default XCTAssertEqual(msg.oneofInt32, Int32(0)) // Default
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.gpbUnsetOneOfCase)
// Sets via the autocreated instance. // Sets via the autocreated instance.
msg.oneofMessage.optionalInt32 = 300 msg.oneof.optionalInt32 = 300
XCTAssertTrue(msg.oneofMessage !== autoCreated) // New instance XCTAssertTrue(msg.oneof !== autoCreated) // New instance
XCTAssertTrue(msg.oneofMessage !== autoCreated2) // New instance XCTAssertTrue(msg.oneof !== autoCreated2) // New instance
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(300)) XCTAssertEqual(msg.oneof.optionalInt32, Int32(300))
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.OneofMessage) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.oneofMessage)
// Set message to nil clears the oneof. // Set message to nil clears the oneof.
msg.oneofMessage = nil msg.oneof = nil
XCTAssertEqual(msg.oneofMessage.optionalInt32, Int32(0)) // Default XCTAssertEqual(msg.oneof.optionalInt32, Int32(0)) // Default
XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.GPBUnsetOneOfCase) XCTAssertEqual(msg.oOneOfCase, Message3_O_OneOfCase.gpbUnsetOneOfCase)
} }
func testSerialization() { func testSerialization() {
...@@ -437,12 +437,12 @@ class GPBBridgeTests: XCTestCase { ...@@ -437,12 +437,12 @@ class GPBBridgeTests: XCTestCase {
msg.optionalInt32 = 100 msg.optionalInt32 = 100
msg.optionalInt64 = 101 msg.optionalInt64 = 101
msg.optionalGroup.a = 102 msg.optionalGroup.a = 102
msg.repeatedStringArray.addObject("abc") msg.repeatedStringArray.add("abc")
msg.repeatedStringArray.addObject("def") msg.repeatedStringArray.add("def")
msg.mapInt32Int32.setInt32(200, forKey:300) msg.mapInt32Int32.setInt32(200, forKey:300)
msg.mapInt32Int32.setInt32(201, forKey:201) msg.mapInt32Int32.setInt32(201, forKey:201)
msg.mapStringString.setObject("foo", forKey:"bar") msg.mapStringString.setObject("foo", forKey:"bar" as NSString)
msg.mapStringString.setObject("abc", forKey:"xyz") msg.mapStringString.setObject("abc", forKey:"xyz" as NSString)
let data = msg.data() let data = msg.data()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment