Navigation Menu

Skip to content

Commit

Permalink
Added tests for feature error report info (#2356)
Browse files Browse the repository at this point in the history
* Added tests
  • Loading branch information
AnatolyPristensky committed Sep 16, 2021
1 parent 45df825 commit f80d90b
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 0 deletions.
4 changes: 4 additions & 0 deletions AppCenter/AppCenterTests/MSACDeviceLogTests.m
Expand Up @@ -224,6 +224,10 @@ - (void)testIsEqual {

// Then
XCTAssertFalse([self.sut isEqual:actualDevice]);

// Check description method result.
NSMutableDictionary *serializeResult = [self.sut serializeToDictionary];
assertThat(serializeResult.description, equalTo([self.sut description]));
}

- (void)testIsNotEqualToNil {
Expand Down
1 change: 1 addition & 0 deletions AppCenterCrashes/AppCenterCrashesTests/MSACBinaryTests.m
Expand Up @@ -30,6 +30,7 @@ - (void)testSerializingBinaryToDictionaryWorks {
assertThat(actual[@"architecture"], equalTo(sut.architecture));
assertThat(actual[@"primaryArchitectureId"], equalTo(sut.primaryArchitectureId));
assertThat(actual[@"architectureVariantId"], equalTo(sut.architectureVariantId));
assertThat(actual.description, equalTo([sut description]));
}

- (void)testNSCodingSerializationAndDeserializationWorks {
Expand Down
123 changes: 123 additions & 0 deletions AppCenterCrashes/AppCenterCrashesTests/MSACErrorLogFormatterTests.mm
Expand Up @@ -736,4 +736,127 @@ - (void)testCrashReportsParametersFromMacOSReport {
}
#endif

- (void)checkIfCodeTypeConvertedCorrectly:(NSNumber *)codeType isKnownEncodingType:(BOOL)isKnownEncodingType expectedType:(NSString *)expectedType {

// Init apple error log with codeType and acrhName.
MSACAppleErrorLog *errorLog = [MSACAppleErrorLog new];
errorLog.primaryArchitectureId = codeType;
errorLog.isKnownEncodingType = isKnownEncodingType;

// Convert apple error log to error report.
MSACErrorReport *errorReport = [MSACErrorLogFormatter errorReportFromLog:errorLog];

// Verify that codeType was converted as excpected.
XCTAssertEqual(errorReport.codeType, expectedType);
}

- (void)checkIfArchNameConvertedCorrectly:(NSNumber *)codeType archName:(NSNumber *)archName isKnownEncodingType:(BOOL)isKnownEncodingType expectedName:(NSString *)expectedName {

// Init apple error log with codeType and acrhName.
MSACAppleErrorLog *errorLog = [MSACAppleErrorLog new];
errorLog.primaryArchitectureId = codeType;
errorLog.architectureVariantId = archName;
errorLog.isKnownEncodingType = isKnownEncodingType;

// Convert apple error log to error report.
MSACErrorReport *errorReport = [MSACErrorLogFormatter errorReportFromLog:errorLog];

// Verify that archName was converted as excpected.
XCTAssertEqual(errorReport.archName, expectedName);
}

- (void)testConvertCodeTypeToString {
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_ARM) isKnownEncodingType:YES expectedType:@"ARM"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_ARM64) isKnownEncodingType:YES expectedType:@"ARM-64"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_X86) isKnownEncodingType:YES expectedType:@"X86"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_X86_64) isKnownEncodingType:YES expectedType:@"X86-64"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_POWERPC) isKnownEncodingType:YES expectedType:@"PPC"];
}

- (void)testConvertArchNameToString {
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V6)
isKnownEncodingType:YES
expectedName:@"armv6"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V7)
isKnownEncodingType:YES
expectedName:@"armv7"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V7S)
isKnownEncodingType:YES
expectedName:@"armv7s"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64_ALL)
isKnownEncodingType:YES
expectedName:@"arm64"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64_V8)
isKnownEncodingType:YES
expectedName:@"armv8"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64E)
isKnownEncodingType:YES
expectedName:@"arm64e"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_X86)
archName:@(CPU_TYPE_X86)
isKnownEncodingType:YES
expectedName:@"i386"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_X86_64)
archName:@(CPU_TYPE_X86_64)
isKnownEncodingType:YES
expectedName:@"x86_64"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_POWERPC)
archName:@(CPU_TYPE_POWERPC)
isKnownEncodingType:YES
expectedName:@"powerpc"];
}

- (void)testConvertCodeTypeUnknownEncodingTypeToString {
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_ARM) isKnownEncodingType:NO expectedType:@"???"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_ARM64) isKnownEncodingType:NO expectedType:@"???"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_X86) isKnownEncodingType:NO expectedType:@"???"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_X86_64) isKnownEncodingType:NO expectedType:@"???"];
[self checkIfCodeTypeConvertedCorrectly:@(CPU_TYPE_POWERPC) isKnownEncodingType:NO expectedType:@"???"];
}

- (void)testConvertArchNameUnknownEncodingTypeToString {
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V6)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V7)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM)
archName:@(CPU_SUBTYPE_ARM_V7S)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64_ALL)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64_V8)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_ARM64)
archName:@(CPU_SUBTYPE_ARM64E)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_X86)
archName:@(CPU_TYPE_X86)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_X86_64)
archName:@(CPU_TYPE_X86_64)
isKnownEncodingType:NO
expectedName:@"???"];
[self checkIfArchNameConvertedCorrectly:@(CPU_TYPE_POWERPC)
archName:@(CPU_TYPE_POWERPC)
isKnownEncodingType:NO
expectedName:@"???"];
}

@end
1 change: 1 addition & 0 deletions AppCenterCrashes/AppCenterCrashesTests/MSACThreadTests.m
Expand Up @@ -60,6 +60,7 @@ - (void)testSerializingBinaryToDictionaryWorks {
assertThat(actual[@"name"], equalTo(sut.name));
assertThat([actual[@"exception"] valueForKey:@"type"], equalTo(sut.exception.type));
assertThat([actual[@"exception"] valueForKey:@"message"], equalTo(sut.exception.message));
assertThat(actual.description, equalTo([sut description]));

NSArray *actualFrames = [actual[@"exception"] valueForKey:@"frames"];
XCTAssertEqual(actualFrames.count, sut.exception.frames.count);
Expand Down
Expand Up @@ -301,4 +301,20 @@ - (void)testTrackExceptionWithAllParameters {
XCTAssertEqualObjects(actualErrorId, errorId);
}

- (void)testBuildHandledErrorReportWithErrorID {
MSACErrorReport *report = [MSACWrapperCrashesHelper buildHandledErrorReportWithErrorID:@"errorID"];
XCTAssertNil(report.codeType);
XCTAssertNil(report.archName);
XCTAssertNil(report.applicationPath);
XCTAssertNil(report.threads);
XCTAssertNil(report.binaries);
XCTAssertNil(report.reporterKey);
XCTAssertNil(report.signal);
XCTAssertNil(report.exceptionName);
XCTAssertNil(report.exceptionReason);
XCTAssertEqualObjects(report.appStartTime, [MSACCrashes sharedInstance].appStartTime);
XCTAssertEqualObjects(report.device, [MSACDeviceTracker sharedInstance].device);
XCTAssertNotNil(report.appErrorTime);
}

@end

0 comments on commit f80d90b

Please sign in to comment.