summaryrefslogtreecommitdiff
path: root/platform/darwin/test/MGLRendererConfigurationTests.mm
diff options
context:
space:
mode:
authorm-stephen <truestyle2005@163.com>2019-07-10 10:00:35 +0800
committerGitHub <noreply@github.com>2019-07-10 10:00:35 +0800
commit6b59db8fb0118633e354b4fff5d615a0f095faa7 (patch)
tree3765e70808d7167c22ded18b48c014c4b9a94fb7 /platform/darwin/test/MGLRendererConfigurationTests.mm
parent18f7e4b84d761623a825498398ef58b79ee39ecd (diff)
downloadqtlocation-mapboxgl-6b59db8fb0118633e354b4fff5d615a0f095faa7.tar.gz
[ios, macos] Default to local rendering of CJK characters, using system font (#14862)
* Change default CJK font from "PingFang" to "Helvetica" * Add CHANGELOG. * Update CHANGELOG. * [ios] Enable client-side rendering and use `Helvetica` by default. Set `MGLIdeographicFontFamilyName` to `NULL` for using your custom remote font. * [ios] Update change log * [ios] Change default CJK configuration in `iosapp` project * [ios] Update comment * [ios] return local font name using default system font. * [ios] Update changelog * [ios] update changelogs & comments * [iOS, macOS]Support mac os * [iOS, macOS] fix bug * [iOS, macOS] update change log * [iOS, macOS] fix nit. * [iOS, macOS] Ability to specify an array of fonts for fallbacks for `localIdeographicFontFamily` * [iOS, macOS] Update comments * [iOS, macOS] Update change log * [iOS, macOS] update for mac OS font family names * Fix nit. * Update platform/ios/CHANGELOG.md Co-Authored-By: Minh Nguyễn <mxn@1ec5.org> * [iOS, macOS] Set `MGLIdeographicFontFamilyName` to a Boolean value `NO` for using your custom remote font. * [iOS, macOS] remove `MGLIdeographicFontFamilyName` from info.plist & update Info.plist Keys.md * [iOS, macOS] remove `MGLIdeographicFontFamilyName` from macOS demo app project and update info.plist Keys.md * [iOS, macOS] update macOS changelog * [iOS, macOS] Change docs * Update Change log * [iOS, macOS] Test case * Update platform/macos/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/macos/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/ios/CHANGELOG.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/darwin/src/MGLRendererConfiguration.mm Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/darwin/test/MGLRendererConfigurationTests.mm Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/macos/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/macos/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/macos/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * [iOS, macOS] update comments * [iOS, macOS] add plist value test && filter for invalid string * [iOS, macOS] fix nit * Update platform/ios/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/ios/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/ios/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/macos/CHANGELOG.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/ios/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * Update platform/ios/docs/guides/Info.plist Keys.md Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com> * [iOS, macOS] add invalid value type test * Apply own suggestions from code review
Diffstat (limited to 'platform/darwin/test/MGLRendererConfigurationTests.mm')
-rw-r--r--platform/darwin/test/MGLRendererConfigurationTests.mm105
1 files changed, 103 insertions, 2 deletions
diff --git a/platform/darwin/test/MGLRendererConfigurationTests.mm b/platform/darwin/test/MGLRendererConfigurationTests.mm
index a0c630ebb5..6483aa3587 100644
--- a/platform/darwin/test/MGLRendererConfigurationTests.mm
+++ b/platform/darwin/test/MGLRendererConfigurationTests.mm
@@ -6,6 +6,7 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M
@interface MGLRendererConfiguration (Tests)
- (instancetype)initWithPropertyDictionary:(nonnull NSDictionary*)bundle;
+- (mbgl::optional<std::string>)_localFontFamilyNameWithPropertyDictionary:(nonnull NSDictionary *)properties;
@end
@@ -77,14 +78,12 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M
}
- (void)testOverridingMGLCollisionBehaviorPre40 {
-
// Dictionary = NO, NSUserDefaults = YES
{
[[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(NO)}];
XCTAssert(config.perSourceCollisions);
}
-
// Dictionary = YES, NSUserDefaults = NO
{
[[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:MGLRendererConfigurationTests_collisionBehaviorKey];
@@ -93,4 +92,106 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M
}
}
+- (void)testDefaultLocalFontFamilyName {
+
+ MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init];
+ std::string localFontFamilyName = config.localFontFamilyName.value();
+
+ std::string systemFontFamilyName;
+#if TARGET_OS_IPHONE
+ systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
+#else
+ systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
+#endif
+
+ XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Default local font family name should match default system font");
+}
+
+- (void)testSettingMGLIdeographicFontFamilyNameWithPlistValue {
+
+ MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init];
+ NSDictionary *dic;
+
+ // `MGLIdeographicFontFamilyName` set to bool value `YES`
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @(YES)};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+
+ std::string systemFontFamilyName;
+#if TARGET_OS_IPHONE
+ systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
+#else
+ systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
+#endif
+ XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting `YES`");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to bool value `NO`
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @(NO)};
+ mbgl::optional<std::string> localFontFamilyName = [config _localFontFamilyNameWithPropertyDictionary:dic];
+ XCTAssertFalse(localFontFamilyName.has_value(), @"Client rendering font should use remote font when setting `NO`");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to a valid font string value
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @"PingFang TC"};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+ std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]);
+ XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to an invalid font string value
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @"test font"};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+
+ std::string systemFontFamilyName;
+#if TARGET_OS_IPHONE
+ systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
+#else
+ systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
+#endif
+ XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font string");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to a valid font family names array value
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"PingFang TC", @"test font 2"]};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+ std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]);
+ XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name in a font family names array");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to an invalid font family names array value
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"test font 2", @"test font 3"]};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+
+ std::string systemFontFamilyName;
+#if TARGET_OS_IPHONE
+ systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
+#else
+ systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
+#endif
+ XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font family names array");
+ }
+
+ // `MGLIdeographicFontFamilyName` set to an invalid value type: NSDictionary, NSNumber, NSData, etc.
+ {
+ dic = @{@"MGLIdeographicFontFamilyName": [@"test font 1" dataUsingEncoding:NSUTF8StringEncoding]};
+ std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value();
+
+ std::string systemFontFamilyName;
+#if TARGET_OS_IPHONE
+ systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
+#else
+ systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
+#endif
+ XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid value type");
+ }
+}
+
+
+
@end