summaryrefslogtreecommitdiff
path: root/platform/ios/test/MGLNetworkConfigurationTests.m
blob: 56a2074ff94252e049690f2f950a1c2c6e1e9845 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#import <Mapbox/Mapbox.h>
#import <XCTest/XCTest.h>
#import "MGLNetworkConfiguration_Private.h"

@interface MGLNetworkConfigurationTests : XCTestCase
@end

@implementation MGLNetworkConfigurationTests

- (void)testAccessingEventsFromMultipleThreads {
    MGLNetworkConfiguration *configuration = [[MGLNetworkConfiguration alloc] init];
    
    // Concurrent
    dispatch_queue_t queue = dispatch_queue_create("com.mapbox.testAccessingEventsFromMultipleThreads", DISPATCH_QUEUE_CONCURRENT);
    
    NSUInteger numberOfConcurrentBlocks = 20;
    
    XCTestExpectation *expectation = [self expectationWithDescription:@"wait-for-threads"];
    expectation.expectedFulfillmentCount = numberOfConcurrentBlocks;
    
    for (NSUInteger i = 0; i < numberOfConcurrentBlocks; i++) {
        
        NSString *event = [NSString stringWithFormat:@"test://event-%ld", i];
        NSString *resourceType = @"test";
        
        dispatch_async(queue, ^{
            [configuration startDownloadEvent:event type:resourceType];
            
            NSURL *url = [NSURL URLWithString:event];
            NSURLResponse *response = [[NSURLResponse alloc] initWithURL:url MIMEType:nil expectedContentLength:0 textEncodingName:nil];
            
            [configuration stopDownloadEventForResponse:response];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                [expectation fulfill];
            });
        });
    }
    
    [self waitForExpectations:@[expectation] timeout:10.0];
}
@end