| /* |
| * Copyright 2018 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #import "api/logging/RTCCallbackLogger.h" |
| |
| #import <XCTest/XCTest.h> |
| |
| @interface RTCCallbackLoggerTests : XCTestCase |
| |
| @property(nonatomic, strong) RTC_OBJC_TYPE(RTCCallbackLogger) * logger; |
| |
| @end |
| |
| @implementation RTCCallbackLoggerTests |
| |
| @synthesize logger; |
| |
| - (void)setUp { |
| self.logger = [[RTC_OBJC_TYPE(RTCCallbackLogger) alloc] init]; |
| } |
| |
| - (void)tearDown { |
| self.logger = nil; |
| } |
| |
| - (void)testDefaultSeverityLevel { |
| XCTAssertEqual(self.logger.severity, RTCLoggingSeverityInfo); |
| } |
| |
| - (void)testCallbackGetsCalledForAppropriateLevel { |
| self.logger.severity = RTCLoggingSeverityWarning; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"callbackWarning"]; |
| |
| [self.logger start:^(NSString *message) { |
| XCTAssertTrue([message hasSuffix:@"Horrible error\n"]); |
| [callbackExpectation fulfill]; |
| }]; |
| |
| RTCLogError("Horrible error"); |
| |
| [self waitForExpectations:@[ callbackExpectation ] timeout:10.0]; |
| } |
| |
| - (void)testCallbackWithSeverityGetsCalledForAppropriateLevel { |
| self.logger.severity = RTCLoggingSeverityWarning; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"callbackWarning"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity severity) { |
| XCTAssertTrue([message hasSuffix:@"Horrible error\n"]); |
| XCTAssertEqual(severity, RTCLoggingSeverityError); |
| [callbackExpectation fulfill]; |
| }]; |
| |
| RTCLogError("Horrible error"); |
| |
| [self waitForExpectations:@[ callbackExpectation ] timeout:10.0]; |
| } |
| |
| - (void)testCallbackDoesNotGetCalledForOtherLevels { |
| self.logger.severity = RTCLoggingSeverityError; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"callbackError"]; |
| |
| [self.logger start:^(NSString *message) { |
| XCTAssertTrue([message hasSuffix:@"Horrible error\n"]); |
| [callbackExpectation fulfill]; |
| }]; |
| |
| RTCLogInfo("Just some info"); |
| RTCLogWarning("Warning warning"); |
| RTCLogError("Horrible error"); |
| |
| [self waitForExpectations:@[ callbackExpectation ] timeout:10.0]; |
| } |
| |
| - (void)testCallbackWithSeverityDoesNotGetCalledForOtherLevels { |
| self.logger.severity = RTCLoggingSeverityError; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"callbackError"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity severity) { |
| XCTAssertTrue([message hasSuffix:@"Horrible error\n"]); |
| XCTAssertEqual(severity, RTCLoggingSeverityError); |
| [callbackExpectation fulfill]; |
| }]; |
| |
| RTCLogInfo("Just some info"); |
| RTCLogWarning("Warning warning"); |
| RTCLogError("Horrible error"); |
| |
| [self waitForExpectations:@[ callbackExpectation ] timeout:10.0]; |
| } |
| |
| - (void)testCallbackDoesNotgetCalledForSeverityNone { |
| self.logger.severity = RTCLoggingSeverityNone; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"unexpectedCallback"]; |
| |
| [self.logger start:^(NSString *message) { |
| [callbackExpectation fulfill]; |
| XCTAssertTrue(false); |
| }]; |
| |
| RTCLogInfo("Just some info"); |
| RTCLogWarning("Warning warning"); |
| RTCLogError("Horrible error"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testCallbackWithSeverityDoesNotgetCalledForSeverityNone { |
| self.logger.severity = RTCLoggingSeverityNone; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"unexpectedCallback"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity severity) { |
| [callbackExpectation fulfill]; |
| XCTAssertTrue(false); |
| }]; |
| |
| RTCLogInfo("Just some info"); |
| RTCLogWarning("Warning warning"); |
| RTCLogError("Horrible error"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testStartingWithNilCallbackDoesNotCrash { |
| [self.logger start:nil]; |
| |
| RTCLogError("Horrible error"); |
| } |
| |
| - (void)testStartingWithNilCallbackWithSeverityDoesNotCrash { |
| [self.logger startWithMessageAndSeverityHandler:nil]; |
| |
| RTCLogError("Horrible error"); |
| } |
| |
| - (void)testStopCallbackLogger { |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"stopped"]; |
| |
| [self.logger start:^(NSString *message) { |
| [callbackExpectation fulfill]; |
| }]; |
| |
| [self.logger stop]; |
| |
| RTCLogInfo("Just some info"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testStopCallbackWithSeverityLogger { |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"stopped"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity loggingServerity) { |
| [callbackExpectation fulfill]; |
| }]; |
| |
| [self.logger stop]; |
| |
| RTCLogInfo("Just some info"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testDestroyingCallbackLogger { |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"destroyed"]; |
| |
| [self.logger start:^(NSString *message) { |
| [callbackExpectation fulfill]; |
| }]; |
| |
| self.logger = nil; |
| |
| RTCLogInfo("Just some info"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testDestroyingCallbackWithSeverityLogger { |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"destroyed"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity loggingServerity) { |
| [callbackExpectation fulfill]; |
| }]; |
| |
| self.logger = nil; |
| |
| RTCLogInfo("Just some info"); |
| |
| XCTWaiter *waiter = [[XCTWaiter alloc] init]; |
| XCTWaiterResult result = [waiter waitForExpectations:@[ callbackExpectation ] timeout:1.0]; |
| XCTAssertEqual(result, XCTWaiterResultTimedOut); |
| } |
| |
| - (void)testCallbackWithSeverityLoggerCannotStartTwice { |
| self.logger.severity = RTCLoggingSeverityWarning; |
| |
| XCTestExpectation *callbackExpectation = [self expectationWithDescription:@"callbackWarning"]; |
| |
| [self.logger |
| startWithMessageAndSeverityHandler:^(NSString *message, RTCLoggingSeverity loggingServerity) { |
| XCTAssertTrue([message hasSuffix:@"Horrible error\n"]); |
| XCTAssertEqual(loggingServerity, RTCLoggingSeverityError); |
| [callbackExpectation fulfill]; |
| }]; |
| |
| [self.logger start:^(NSString *message) { |
| [callbackExpectation fulfill]; |
| XCTAssertTrue(false); |
| }]; |
| |
| RTCLogError("Horrible error"); |
| |
| [self waitForExpectations:@[ callbackExpectation ] timeout:10.0]; |
| } |
| |
| @end |