mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00

git-subtree-dir: submodules/AsyncDisplayKit git-subtree-mainline: d06f423e0ed3df1fed9bd10d79ee312a9179b632 git-subtree-split: 02bedc12816e251ad71777f9d2578329b6d2bef6
140 lines
4.0 KiB
Plaintext
140 lines
4.0 KiB
Plaintext
//
|
|
// ASConfigurationTests.m
|
|
// Texture
|
|
//
|
|
// Copyright (c) Pinterest, Inc. All rights reserved.
|
|
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
|
|
#import <XCTest/XCTest.h>
|
|
|
|
#import <AsyncDisplayKit/ASAvailability.h>
|
|
#import <AsyncDisplayKit/ASConfiguration.h>
|
|
#import <AsyncDisplayKit/ASConfigurationDelegate.h>
|
|
#import <AsyncDisplayKit/ASConfigurationInternal.h>
|
|
|
|
#import "ASTestCase.h"
|
|
|
|
static ASExperimentalFeatures features[] = {
|
|
ASExperimentalGraphicsContexts,
|
|
#if AS_ENABLE_TEXTNODE
|
|
ASExperimentalTextNode,
|
|
#endif
|
|
ASExperimentalInterfaceStateCoalescing,
|
|
ASExperimentalUnfairLock,
|
|
ASExperimentalLayerDefaults,
|
|
ASExperimentalCollectionTeardown,
|
|
ASExperimentalFramesetterCache,
|
|
ASExperimentalSkipClearData,
|
|
ASExperimentalDidEnterPreloadSkipASMLayout,
|
|
ASExperimentalDisableAccessibilityCache,
|
|
ASExperimentalDispatchApply,
|
|
ASExperimentalImageDownloaderPriority,
|
|
ASExperimentalTextDrawing
|
|
};
|
|
|
|
@interface ASConfigurationTests : ASTestCase <ASConfigurationDelegate>
|
|
|
|
@end
|
|
|
|
@implementation ASConfigurationTests {
|
|
void (^onActivate)(ASConfigurationTests *self, ASExperimentalFeatures feature);
|
|
}
|
|
|
|
+ (NSArray *)names {
|
|
return @[
|
|
@"exp_graphics_contexts",
|
|
@"exp_text_node",
|
|
@"exp_interface_state_coalesce",
|
|
@"exp_unfair_lock",
|
|
@"exp_infer_layer_defaults",
|
|
@"exp_collection_teardown",
|
|
@"exp_framesetter_cache",
|
|
@"exp_skip_clear_data",
|
|
@"exp_did_enter_preload_skip_asm_layout",
|
|
@"exp_disable_a11y_cache",
|
|
@"exp_dispatch_apply",
|
|
@"exp_image_downloader_priority",
|
|
@"exp_text_drawing"
|
|
];
|
|
}
|
|
|
|
- (ASExperimentalFeatures)allFeatures {
|
|
ASExperimentalFeatures allFeatures = 0;
|
|
for (int i = 0; i < sizeof(features)/sizeof(ASExperimentalFeatures); i++) {
|
|
allFeatures |= features[i];
|
|
}
|
|
return allFeatures;
|
|
}
|
|
|
|
#if AS_ENABLE_TEXTNODE
|
|
|
|
- (void)testExperimentalFeatureConfig
|
|
{
|
|
// Set the config
|
|
ASConfiguration *config = [[ASConfiguration alloc] initWithDictionary:nil];
|
|
config.experimentalFeatures = ASExperimentalGraphicsContexts;
|
|
config.delegate = self;
|
|
[ASConfigurationManager test_resetWithConfiguration:config];
|
|
|
|
// Set an expectation for a callback, and assert we only get one.
|
|
XCTestExpectation *e = [self expectationWithDescription:@"Callbacks done."];
|
|
e.expectedFulfillmentCount = 2;
|
|
e.assertForOverFulfill = YES;
|
|
onActivate = ^(ASConfigurationTests *self, ASExperimentalFeatures feature) {
|
|
[e fulfill];
|
|
};
|
|
|
|
// Now activate the graphics experiment and expect it works.
|
|
XCTAssertTrue(ASActivateExperimentalFeature(ASExperimentalGraphicsContexts));
|
|
// We should get a callback here
|
|
// Now activate text node and expect it fails.
|
|
XCTAssertFalse(ASActivateExperimentalFeature(ASExperimentalTextNode));
|
|
// But we should get another callback.
|
|
[self waitForExpectationsWithTimeout:3 handler:nil];
|
|
}
|
|
|
|
#endif
|
|
|
|
- (void)textureDidActivateExperimentalFeatures:(ASExperimentalFeatures)feature
|
|
{
|
|
if (onActivate) {
|
|
onActivate(self, feature);
|
|
}
|
|
}
|
|
|
|
- (void)testMappingNamesToFlags
|
|
{
|
|
// Throw in a bad bit.
|
|
ASExperimentalFeatures allFeatures = [self allFeatures];
|
|
ASExperimentalFeatures featuresWithBadBit = allFeatures | (1 << 22);
|
|
NSArray *expectedNames = [ASConfigurationTests names];
|
|
XCTAssertEqualObjects(expectedNames, ASExperimentalFeaturesGetNames(featuresWithBadBit));
|
|
}
|
|
|
|
- (void)testMappingFlagsFromNames
|
|
{
|
|
// Throw in a bad name.
|
|
NSMutableArray *allNames = [[NSMutableArray alloc] initWithArray:[ASConfigurationTests names]];
|
|
[allNames addObject:@"__invalid_name"];
|
|
ASExperimentalFeatures expected = [self allFeatures];
|
|
XCTAssertEqual(expected, ASExperimentalFeaturesFromArray(allNames));
|
|
}
|
|
|
|
- (void)testFlagMatchName
|
|
{
|
|
NSArray *names = [ASConfigurationTests names];
|
|
for (NSInteger i = 0; i < names.count; i++) {
|
|
XCTAssertEqual(features[i], ASExperimentalFeaturesFromArray(@[names[i]]));
|
|
}
|
|
}
|
|
|
|
- (void)testNameMatchFlag {
|
|
NSArray *names = [ASConfigurationTests names];
|
|
for (NSInteger i = 0; i < names.count; i++) {
|
|
XCTAssertEqualObjects(@[names[i]], ASExperimentalFeaturesGetNames(features[i]));
|
|
}
|
|
}
|
|
|
|
@end
|