Files
MapLibreParticleLab/platform/darwin/test/MGLStyleLayerTests.m
Jason Wray c067865e7b [ios, macos] Update minimum deployment versions to iOS 9, macOS 10.11 (#11776)
* [ios] Remove iOS 8 conditionals

* [ios, macos] Bump pod deployment targets

* [ios, macos] Add changelog entries

* [ios, macos] Update docs

* Remove unnecessary selector-based version checks

* Update SQLite note

* [ios, macos] Replace lightweight generics macros with direct use
   Lightweight generics for Foundation collections are available everywhere with the bump to iOS 9 and macOS 10.11.

* Update deprecated macOS method
2018-04-27 12:25:49 -04:00

119 lines
4.7 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "MGLStyleLayerTests.h"
#import "NSString+MGLAdditions.h"
#define TEST_STRICT_NAMING_CONVENTIONS 0
@implementation MGLStyleLayerTests
@dynamic layerType;
- (void)testProperties {
MGLPointFeature *feature = [[MGLPointFeature alloc] init];
MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
MGLFillStyleLayer *layer = [[MGLFillStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
XCTAssertEqualObjects(layer.identifier, @"layerID");
XCTAssertEqualObjects(layer.sourceIdentifier, source.identifier);
XCTAssertTrue(layer.visible);
layer.visible = NO;
XCTAssertFalse(layer.visible);
layer.visible = YES;
XCTAssertTrue(layer.visible);
XCTAssertEqual(layer.minimumZoomLevel, -INFINITY);
layer.minimumZoomLevel = 22;
XCTAssertEqual(layer.minimumZoomLevel, 22);
XCTAssertEqual(layer.maximumZoomLevel, INFINITY);
layer.maximumZoomLevel = 0;
XCTAssertEqual(layer.maximumZoomLevel, 0);
}
- (void)testPropertyName:(NSString *)name isBoolean:(BOOL)isBoolean {
NSMutableArray<NSString *> *components = [name componentsSeparatedByString:@"-"].mutableCopy;
if (isBoolean) {
if ([components.firstObject isEqualToString:@"is"]) {
[components removeObjectAtIndex:0];
if (![components.lastObject.lexicalClasses containsObject:NSLinguisticTagAdjective]) {
XCTAssertTrue([components.lastObject.lexicalClasses containsObject:NSLinguisticTagVerb],
@"Boolean getter %@ that starts with “is” should contain an adjective, past participle, or verb.", name);
XCTAssertNotEqualObjects(components.lastObject.lemma, components.lastObject,
@"Boolean getter %@ should not have infinitive, imperative, or present tense verb.", name);
}
} else {
if ([components.firstObject isEqualToString:[self class].layerType]
|| [components.firstObject isEqualToString:@"icon"] || [components.firstObject isEqualToString:@"text"]) {
[components removeObjectAtIndex:0];
}
#if TEST_STRICT_NAMING_CONVENTIONS
XCTAssertTrue([components.firstObject.lexicalClasses containsObject:NSLinguisticTagVerb],
@"Boolean getter %@ that doesn’t start with “is” should contain a verb.", name);
XCTAssertNotEqualObjects(components.firstObject.lemma, components.lastObject);
#endif
}
} else {
XCTAssertFalse([components.firstObject isEqualToString:@"is"]);
#if TEST_STRICT_NAMING_CONVENTIONS
XCTAssertTrue([components.lastObject.lexicalClasses containsObject:NSLinguisticTagNoun],
@"Non-Boolean getter %@ should contain a noun.", name);
#endif
}
}
@end
@implementation NSString (MGLStyleLayerTestAdditions)
- (NSArray<NSString *> *)lexicalClasses {
NSOrthography *orthography = [NSOrthography orthographyWithDominantScript:@"Latn"
languageMap:@{@"Latn": @[@"en"]}];
NSLinguisticTaggerOptions options = (NSLinguisticTaggerOmitPunctuation
| NSLinguisticTaggerOmitWhitespace
| NSLinguisticTaggerOmitOther);
return [self linguisticTagsInRange:self.mgl_wholeRange
scheme:NSLinguisticTagSchemeLexicalClass
options:options
orthography:orthography
tokenRanges:NULL];
}
- (NSString *)lemma {
NSOrthography *orthography = [NSOrthography orthographyWithDominantScript:@"Latn"
languageMap:@{@"Latn": @[@"en"]}];
NSLinguisticTaggerOptions options = (NSLinguisticTaggerOmitPunctuation
| NSLinguisticTaggerOmitWhitespace
| NSLinguisticTaggerOmitOther);
return [self linguisticTagsInRange:self.mgl_wholeRange
scheme:NSLinguisticTagSchemeLemma
options:options
orthography:orthography
tokenRanges:NULL].firstObject;
}
@end
@implementation NSValue (MGLStyleLayerTestAdditions)
+ (instancetype)valueWithMGLVector:(CGVector)vector {
#if TARGET_OS_IPHONE
return [self valueWithCGVector:vector];
#else
return [self value:&vector withObjCType:@encode(CGVector)];
#endif
}
- (CGVector)MGLVectorValue {
#if TARGET_OS_IPHONE
return self.CGVectorValue;
#else
CGVector vector;
[self getValue:&vector];
return vector;
#endif
}
@end