3333274cfb
Fixes #43
87 lines
2.0 KiB
Objective-C
87 lines
2.0 KiB
Objective-C
//
|
|
// HTMLKitTestObserver.m
|
|
// HTMLKit
|
|
//
|
|
// Created by Iska on 10/04/16.
|
|
// Copyright © 2016 BrainCookie. All rights reserved.
|
|
//
|
|
|
|
#import "HTMLKitTestObserver.h"
|
|
|
|
#pragma mark - HTMLKitTestReport
|
|
|
|
@interface HTMLKitTestReport ()
|
|
@property (assign) NSUInteger totalCount;
|
|
@property (assign) NSUInteger failureCount;
|
|
@property (copy) NSString *failureReport;
|
|
@end
|
|
|
|
@implementation HTMLKitTestReport
|
|
@synthesize totalCount, failureCount, failureReport;
|
|
@end
|
|
|
|
#pragma mark - HTMLKitTestObserver
|
|
|
|
@interface HTMLKitTestObserver ()
|
|
{
|
|
NSString *_name;
|
|
NSMutableArray *_cases;
|
|
NSMutableDictionary *_currentCase;
|
|
}
|
|
@end
|
|
|
|
@implementation HTMLKitTestObserver
|
|
|
|
- (instancetype)initWithName:(NSString *)name
|
|
{
|
|
self = [super init];
|
|
if (self) {
|
|
_name = [name copy];
|
|
_cases = [NSMutableArray new];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
- (void)addCaseForHTML5LibTestWithInput:(NSString *)input
|
|
{
|
|
_currentCase = [NSMutableDictionary new];
|
|
_currentCase[@"input"] = input;
|
|
_currentCase[@"status"] = @"Passed";
|
|
[_cases addObject:_currentCase];
|
|
}
|
|
|
|
- (void)testCase:(XCTestCase *)testCase didRecordIssue:(XCTIssue *)issue
|
|
{
|
|
_currentCase[@"status"] = @"Failed";
|
|
}
|
|
|
|
- (HTMLKitTestReport *)generateReport
|
|
{
|
|
NSMutableString *reportDescription = [NSMutableString string];
|
|
|
|
NSIndexSet *failedIndexes = [_cases indexesOfObjectsPassingTest:^BOOL(NSDictionary *testCase, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
return [testCase[@"status"] isEqualToString:@"Failed"];
|
|
}];
|
|
|
|
NSArray *failedTests = [_cases objectsAtIndexes:failedIndexes];
|
|
|
|
NSUInteger totalCount = _cases.count;
|
|
NSUInteger failureCount = failedTests.count;
|
|
|
|
[reportDescription appendFormat:@"HTML5Lib test %@ failed [%lu] out of [%lu] total tests\n", _name, (unsigned long)failureCount, (unsigned long)_cases.count];
|
|
|
|
for (NSDictionary *testCase in failedTests) {
|
|
[reportDescription appendFormat:@"Failed test for input: %@\n", testCase[@"input"]];
|
|
}
|
|
|
|
HTMLKitTestReport *report = [HTMLKitTestReport new];
|
|
report.totalCount = totalCount;
|
|
report.failureCount = failureCount;
|
|
report.failureReport = reportDescription;
|
|
|
|
return report;
|
|
}
|
|
|
|
@end
|