diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2015-12-23 15:30:02 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2015-12-24 14:41:23 -0800 |
commit | ceb0790cd881f2464ffc167ed41ab009af97c1e5 (patch) | |
tree | ff11f2deb4da74d9a17003e2ec529d1927d21027 /platform | |
parent | e4d84948524844667c742d7d5e0b2c0c4295cde7 (diff) | |
download | qtlocation-mapboxgl-ceb0790cd881f2464ffc167ed41ab009af97c1e5.tar.gz |
[osx] Unit tests
Added an XCTest bundle to the osxsdk scheme. It contains some basic tests of shared iOS/OS X code.
Diffstat (limited to 'platform')
-rwxr-xr-x | platform/osx/scripts/run.sh | 4 | ||||
-rwxr-xr-x | platform/osx/scripts/test.sh | 28 | ||||
-rw-r--r-- | platform/osx/test/Info.plist | 24 | ||||
-rw-r--r-- | platform/osx/test/MGLGeometryTests.mm | 58 | ||||
-rw-r--r-- | platform/osx/test/MGLStyleTests.mm | 29 | ||||
-rw-r--r-- | platform/osx/test/osxtest.gypi | 81 |
6 files changed, 222 insertions, 2 deletions
diff --git a/platform/osx/scripts/run.sh b/platform/osx/scripts/run.sh index dcb83e2902..3bdd6bfc76 100755 --- a/platform/osx/scripts/run.sh +++ b/platform/osx/scripts/run.sh @@ -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} diff --git a/platform/osx/scripts/test.sh b/platform/osx/scripts/test.sh new file mode 100755 index 0000000000..98b22a9b98 --- /dev/null +++ b/platform/osx/scripts/test.sh @@ -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 diff --git a/platform/osx/test/Info.plist b/platform/osx/test/Info.plist new file mode 100644 index 0000000000..ba72822e87 --- /dev/null +++ b/platform/osx/test/Info.plist @@ -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> diff --git a/platform/osx/test/MGLGeometryTests.mm b/platform/osx/test/MGLGeometryTests.mm new file mode 100644 index 0000000000..be3c7cb2da --- /dev/null +++ b/platform/osx/test/MGLGeometryTests.mm @@ -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 diff --git a/platform/osx/test/MGLStyleTests.mm b/platform/osx/test/MGLStyleTests.mm new file mode 100644 index 0000000000..69c9ef6091 --- /dev/null +++ b/platform/osx/test/MGLStyleTests.mm @@ -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 diff --git a/platform/osx/test/osxtest.gypi b/platform/osx/test/osxtest.gypi new file mode 100644 index 0000000000..d5d54f3c22 --- /dev/null +++ b/platform/osx/test/osxtest.gypi @@ -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', + }, + }, + }, + }, + ] +} |