RegressionTestsViewController.m [plain text]
//
// RegressionTestsViewController.m
// GSSTestApp
//
// Created by Love Hörnquist Åstrand on 2014-08-15.
// Copyright (c) 2014 Apple, Inc. All rights reserved.
//
#import "RegressionTestsViewController.h"
#import "FakeXCTest.h"
@interface RegressionTestsViewController ()
@property (strong) dispatch_queue_t queue;
@end
static RegressionTestsViewController *me = NULL;
static int
callback(const char *fmt, va_list ap)
{
if (me == NULL)
return -1;
char *output = NULL;
vasprintf(&output, fmt, ap);
dispatch_async(dispatch_get_main_queue(), ^{
[me appendProgress:[NSString stringWithUTF8String:output] color:NULL];
free(output);
});
return 0;
}
@implementation RegressionTestsViewController
- (void)viewDidLoad
{
[super viewDidLoad];
me = self;
XFakeXCTestCallback = callback;
self.queue = dispatch_queue_create("test-queue", NULL);
[self runTests:self];
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (IBAction)runTests:(id)sender
{
[self.statusLabel setText:@"running"];
[self.progressTextView setText:@""];
dispatch_async(self.queue, ^{
NSString *testStatus;
int result = [XCTest runTests];
if (result == 0)
testStatus = @"all tests passed";
else
testStatus = [NSString stringWithFormat:@"
dispatch_async(dispatch_get_main_queue(), ^{
[self.statusLabel setText:testStatus];
});
});
}
- (void)appendProgress:(NSString *)string color:(UIColor *)color {
NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithString:string];
if (color)
[str addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, [str length])];
NSTextStorage *textStorage = [self.progressTextView textStorage];
[textStorage beginEditing];
[textStorage appendAttributedString:str];
[textStorage endEditing];
}
@end