Frameworks/AutoHyperlinks Framework/UnitTests/ThreadedStressTest.m
author Matthew Kotila
Mon, 14 Dec 2015 00:37:29 -0800
changeset 5949 334dc418b409
parent 4917 e196e7a3fcbb
permissions -rw-r--r--
Transition Adium from SenTestingKit to XCTest.

In order to build on OS X 10.11, Xcode 7.2, several changes have been made that are outlined:
- Unit tests Target Build Settings modified:
* 'Wrapper Extension' set to 'xctest'
* 'Enable Modules (C and Objective-C)' set to 'Yes'
- UnitTests Target of AutoHyperlink.framework Build Settings modified:
* 'Wrapper Extension' set to 'xctest'
* 'Enable Modules (C and Objective-C)' set to 'Yes'
* 'Other Linker Flags' removed '-framework SenTestingKit'
- 'SenTestingKit.framework' removed from Adium -> Linked Frameworks -> System
- 'SenTestingKit.framework' removed from Adium -> Linked Frameworks -> AutoHyperlinks.framework.xcodeproj -> External Frameworks and Libraries -> Linked Frameworks
- Find and Replace within 'Adium/Unit tests' && 'Adium/Linked Frameworks/Others/AutoHyperlinks.framework.xcodeproj/UnitTests'
* '<SenTestingKit/SenTestingKit.h>' to '<XCTest/XCTest.h>'
* 'SenTestCase' to 'XCTestCase'
* 'STAssert' to 'XCTAssert'
* 'XCTAssertEquals(' to 'XCTAssertEqual('
* regex '(\[\[\[)([^\]]*\][^\]]*\])(\ autorelease\]);' to '[[$2;'
* regex '(\[)([^\]]*\][^\]]*)(\ autorelease\])' to '$2'
- modified AutoHyperlinks.framework.xcodeproj -> project.pbxproj
* line 331: ?productType = "com.apple.product-type.bundle.ocunit-test";' to 'productType = "com.apple.product-type.bundle.unit-test";'
- AIWebKitMessageViewController.h
* forward declare WebUIDelegate, WebFrameLoadDelegate protocols
* add WebUIDelegate, WebFrameLoadDelegate protocols to 'AIWebKitMessageViewController' class
- AIFacebookXMPPOAuthWebViewWindowController.m lines 107 && 108
* '[[domDoc getElementById:@"email"] setValue:self.autoFillUsername];' to '[domDoc getElementById:@"email"].innerHTML = self.autoFillUsername;'
* '[[domDoc getElementById:@"pass"] setValue:self.autoFillPassword];' to '[domDoc getElementById:@"pass"].innerHTML = self.autoFillPassword;'
- XCTAssertEqual for NSRanges modified to ?XCTAssertTrue(NSEqualRanges(range1, range2)), ...)' in Unit tests
//
//  ThreadedStressTest.m
//  AutoHyperlinks.framework
//
//  Created by Stephen Holt on 6/11/08.
//  Copyright 2008 __MyCompanyName__. All rights reserved.
//

#import "ThreadedStressTest.h"
#import "AutoHyperlinks.h"

#define LOOP_COUNT 10
#define THREAD_COUNT 10

@implementation ThreadedStressTest
-(void) threadedStressTest
{
	NSThread* threads[THREAD_COUNT];
	long completed = 0;
	
	for(long i = 0; i < THREAD_COUNT; i++)
	{
		threads[i] = [[NSThread alloc] initWithTarget:self selector:@selector(performLinkTest:) object:nil];
		[threads[i] setName:[NSString stringWithFormat:@"Thread %i",i]];
	}
	
	for(long i = 0; i < THREAD_COUNT; i++)
	{
		[threads[i] start];
	}
	
	reloop:
	for(long i = 0; i < THREAD_COUNT; i++)
	{
		if(![threads[i] isFinished]) {
			[NSThread sleepForTimeInterval:.1];
			goto reloop;
		}
	}
	return;
}

-(void) performLinkTest:(id)object
{
	@autoreleasepool {
		NSError				*error = nil;
		NSString			*stressString = [NSString stringWithContentsOfFile:[NSString stringWithUTF8String:TEST_URIS_FILE_PATHNAME] encoding:NSUTF8StringEncoding error:&error];
		XCTAssertNil(error, @"stringWithContentsOfFile:encoding:error: could not read file at path '%s': %@", TEST_URIS_FILE_PATHNAME, error);
		
		AHHyperlinkScanner	*scanner = [AHHyperlinkScanner hyperlinkScannerWithString:stressString];
		NSAttributedString	*attrString;
		
		int i = LOOP_COUNT;
		while(i > 0) {
			attrString = [scanner linkifiedString];
			i--;
		}
	}
}
@end