Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

OS X SDK unit tests #3406

Merged
merged 1 commit into from
Dec 24, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ ipackage-no-bitcode: Xcode/ios ; @JOBS=$(JOBS) ./platform/ios/scripts/package.sh
iframework: ipackage-strip ; ./platform/ios/scripts/framework.sh
itest: ipackage-sim ; ./platform/ios/scripts/test.sh

.PHONY: xpackage xpackage-strip
.PHONY: xpackage xpackage-strip xctest
xpackage: Xcode/osx ; @JOBS=$(JOBS) ./platform/osx/scripts/package.sh
xpackage-strip: Xcode/osx ; @JOBS=$(JOBS) ./platform/osx/scripts/package.sh strip
xctest: Xcode/osx ; @JOBS=$(JOBS) ./platform/osx/scripts/test.sh
endif

#### All platforms targets #####################################################
Expand Down
1 change: 1 addition & 0 deletions gyp/osx.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
'includes': [
'../platform/osx/app/mapboxgl-app.gypi',
'../platform/osx/sdk/framework-osx.gypi',
'../platform/osx/test/osxtest.gypi',
'../platform/linux/mapboxgl-app.gypi',
'../test/test.gypi',
'../bin/render.gypi',
Expand Down
4 changes: 2 additions & 2 deletions platform/osx/scripts/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ BUILDTYPE=${BUILDTYPE:-Release}
# Build
################################################################################

mapbox_time "compile_program" \
make xosx -j${JOBS} BUILDTYPE=${BUILDTYPE}
mapbox_time "run_sdk_tests" \
make xctest -j${JOBS} BUILDTYPE=${BUILDTYPE}

mapbox_time "compile_render_binary" \
make xrender -j${JOBS} BUILDTYPE=${BUILDTYPE}
Expand Down
28 changes: 28 additions & 0 deletions platform/osx/scripts/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash

set -e
set -o pipefail
set -u

OSX_SDK_VERSION=`xcrun --sdk macosx --show-sdk-version`
OSX_PROJ_PATH=./build/osx-x86_64/gyp/osx.xcodeproj

export BUILDTYPE=${BUILDTYPE:-Release}

if [[ ! -e "${OSX_PROJ_PATH}/xcshareddata/xcschemes/osxsdk.xcscheme" ]]; then
# Generate schemes
open -g "${OSX_PROJ_PATH}"
sleep 20

# Share osxsdk scheme
mkdir -pv "${OSX_PROJ_PATH}/xcshareddata/xcschemes/"
mv -v \
"${OSX_PROJ_PATH}/xcuserdata/${USER}.xcuserdatad/xcschemes/osxsdk.xcscheme" \
"${OSX_PROJ_PATH}/xcshareddata/xcschemes/"
fi

xcodebuild -verbose \
-sdk macosx${OSX_SDK_VERSION} \
-project "${OSX_PROJ_PATH}" \
-scheme osxsdk \
test
24 changes: 24 additions & 0 deletions platform/osx/test/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
58 changes: 58 additions & 0 deletions platform/osx/test/MGLGeometryTests.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#import "../../darwin/MGLGeometry_Private.h"

#pragma clang diagnostic ignored "-Wgnu-statement-expression"
#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"

#import <XCTest/XCTest.h>

@interface MGLGeometryTests : XCTestCase
@end

@implementation MGLGeometryTests

- (void)testCoordinateBoundsIsEmpty {
MGLCoordinateBounds emptyBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 0));
XCTAssertTrue(MGLCoordinateBoundsIsEmpty(emptyBounds));
XCTAssertFalse(MGLCoordinateSpanEqualToCoordinateSpan(MGLCoordinateSpanZero, MGLCoordinateBoundsGetCoordinateSpan(emptyBounds)));
}

- (void)testAngleConversions {
XCTAssertEqual(-180, MGLDegreesFromRadians(-M_PI));
XCTAssertEqual(0, MGLDegreesFromRadians(0));
XCTAssertEqual(45, MGLDegreesFromRadians(M_PI_4));
XCTAssertEqual(90, MGLDegreesFromRadians(M_PI_2));
XCTAssertEqual(180, MGLDegreesFromRadians(M_PI));
XCTAssertEqual(360, MGLDegreesFromRadians(2 * M_PI));
XCTAssertEqual(720, MGLDegreesFromRadians(4 * M_PI));

XCTAssertEqual(-360, MGLDegreesFromRadians(MGLRadiansFromDegrees(-360)));
XCTAssertEqual(-180, MGLDegreesFromRadians(MGLRadiansFromDegrees(-180)));
XCTAssertEqual(-90, MGLDegreesFromRadians(MGLRadiansFromDegrees(-90)));
XCTAssertEqual(-45, MGLDegreesFromRadians(MGLRadiansFromDegrees(-45)));
XCTAssertEqual(0, MGLDegreesFromRadians(MGLRadiansFromDegrees(0)));
XCTAssertEqual(45, MGLDegreesFromRadians(MGLRadiansFromDegrees(45)));
XCTAssertEqual(90, MGLDegreesFromRadians(MGLRadiansFromDegrees(90)));
XCTAssertEqual(180, MGLDegreesFromRadians(MGLRadiansFromDegrees(180)));
XCTAssertEqual(360, MGLDegreesFromRadians(MGLRadiansFromDegrees(360)));
}

- (void)testAltitudeConversions {
CGSize tallSize = CGSizeMake(600, 1200);
CGSize midSize = CGSizeMake(600, 800);
CGSize shortSize = CGSizeMake(600, 400);

XCTAssertEqualWithAccuracy(1800, MGLAltitudeForZoomLevel(MGLZoomLevelForAltitude(1800, 0, 0, midSize), 0, 0, midSize), 1);
XCTAssertLessThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, tallSize));
XCTAssertGreaterThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, shortSize));

XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 0, midSize), 0, 0, midSize), 3);
XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 0, midSize), 0, 0, midSize), 3);

XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 40, midSize), 0, 40, midSize), 3);
XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 40, midSize), 0, 40, midSize), 3);

XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 60, 40, midSize), 60, 40, midSize), 3);
XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 60, 40, midSize), 60, 40, midSize), 3);
}

@end
29 changes: 29 additions & 0 deletions platform/osx/test/MGLStyleTests.mm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#import "MGLStyle.h"

#import <mbgl/util/default_styles.hpp>

#pragma clang diagnostic ignored "-Wgnu-statement-expression"
#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"

#import <XCTest/XCTest.h>

@interface MGLStyleTests : XCTestCase
@end

@implementation MGLStyleTests

- (void)testStyleURLs {
// Test that all the default styles have publicly-declared MGLStyle class
// methods and that the URLs are all well-formed.
XCTAssertEqualObjects([MGLStyle streetsStyleURL].absoluteString, @(mbgl::util::default_styles::streets.url));
XCTAssertEqualObjects([MGLStyle emeraldStyleURL].absoluteString, @(mbgl::util::default_styles::emerald.url));
XCTAssertEqualObjects([MGLStyle lightStyleURL].absoluteString, @(mbgl::util::default_styles::light.url));
XCTAssertEqualObjects([MGLStyle darkStyleURL].absoluteString, @(mbgl::util::default_styles::dark.url));
XCTAssertEqualObjects([MGLStyle satelliteStyleURL].absoluteString, @(mbgl::util::default_styles::satellite.url));
XCTAssertEqualObjects([MGLStyle hybridStyleURL].absoluteString, @(mbgl::util::default_styles::hybrid.url));

static_assert(6 == mbgl::util::default_styles::numOrderedStyles,
"MGLStyleTests isn’t testing all the styles in mbgl::util::default_styles.");
}

@end
81 changes: 81 additions & 0 deletions platform/osx/test/osxtest.gypi
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
'includes': [
'../../../gyp/common.gypi',
],
'targets': [
{
'target_name': 'osxtest',
'product_name': 'osxtest',
'type': 'loadable_module',
'mac_xctest_bundle': 1,

'dependencies': [
'osxsdk',
],

'variables': {
'cflags_cc': [
],
'ldflags': [
'-stdlib=libc++',
'-lstdc++',
],
},

'xcode_settings': {
'CLANG_ENABLE_MODULES': 'YES',
'CLANG_ENABLE_OBJC_ARC': 'YES',
'ENABLE_STRICT_OBJC_MSGSEND': 'YES',
'GCC_DYNAMIC_NO_PIC': 'NO',
'GCC_NO_COMMON_BLOCKS': 'YES',
'INFOPLIST_FILE': '../platform/osx/test/Info.plist',
'LD_RUNPATH_SEARCH_PATHS': [
'${inherited}',
'@executable_path/../Frameworks',
'@loader_path/../Frameworks',
],
'PRODUCT_BUNDLE_IDENTIFIER': 'com.mapbox.osxtest',
'OTHER_CPLUSPLUSFLAGS': [ '<@(cflags_cc)' ],
'OTHER_LDFLAGS': [ '<@(ldflags)' ],
'SDKROOT': 'macosx',
'SKIP_INSTALL': 'YES',
'SUPPORTED_PLATFORMS':'macosx',
},

'sources': [
'./MGLGeometryTests.mm',
'./MGLStyleTests.mm',
],

'include_dirs': [
'../../../include/mbgl/osx',
'../../../include/mbgl/darwin',
'../../../include',
'../../../src',
],

'configurations': {
'Debug': {
'xcode_settings': {
'COPY_PHASE_STRIP': 'NO',
'DEBUG_INFORMATION_FORMAT': 'dwarf',
'ENABLE_TESTABILITY': 'YES',
'GCC_OPTIMIZATION_LEVEL': '0',
'GCC_PREPROCESSOR_DEFINITIONS': [
'DEBUG=1',
'${inherited}',
],
'ONLY_ACTIVE_ARCH': 'YES',
},
},
'Release': {
'xcode_settings': {
'COPY_PHASE_STRIP': 'YES',
'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
'ENABLE_NS_ASSERTIONS': 'NO',
},
},
},
},
]
}