Skip to content
This repository was archived by the owner on Jun 4, 2025. It is now read-only.

Commit d91d92d

Browse files
committed
Add logging tests
1 parent 8962d23 commit d91d92d

File tree

3 files changed

+144
-2
lines changed

3 files changed

+144
-2
lines changed

Sources/WordPressSharedObjC/Logging/WPSharedLogging.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
NS_ASSUME_NONNULL_BEGIN
55

6-
id<WordPressLoggingDelegate> _Nullable WPSharedGetLoggingDelegate(void);
7-
void WPSharedSetLoggingDelegate(id<WordPressLoggingDelegate> _Nullable logger);
6+
FOUNDATION_EXTERN id<WordPressLoggingDelegate> _Nullable WPSharedGetLoggingDelegate(void);
7+
FOUNDATION_EXTERN void WPSharedSetLoggingDelegate(id<WordPressLoggingDelegate> _Nullable logger);
88

99
FOUNDATION_EXTERN void WPSharedLogError(NSString *str, ...) NS_FORMAT_FUNCTION(1, 2);
1010
FOUNDATION_EXTERN void WPSharedLogWarning(NSString *str, ...) NS_FORMAT_FUNCTION(1, 2);
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#import <XCTest/XCTest.h>
2+
3+
@import WordPressSharedObjC;
4+
5+
@interface CaptureLogs : NSObject<WordPressLoggingDelegate>
6+
7+
@property (nonatomic, strong) NSMutableArray *infoLogs;
8+
@property (nonatomic, strong) NSMutableArray *errorLogs;
9+
10+
@end
11+
12+
@implementation CaptureLogs
13+
14+
- (instancetype)init
15+
{
16+
if ((self = [super init])) {
17+
self.infoLogs = [NSMutableArray new];
18+
self.errorLogs = [NSMutableArray new];
19+
}
20+
return self;
21+
}
22+
23+
- (void)logInfo:(NSString *)str
24+
{
25+
[self.infoLogs addObject:str];
26+
}
27+
28+
- (void)logError:(NSString *)str
29+
{
30+
[self.errorLogs addObject:str];
31+
}
32+
33+
@end
34+
35+
@interface LoggingTest : XCTestCase
36+
37+
@property (nonatomic, strong) CaptureLogs *logger;
38+
39+
@end
40+
41+
@implementation LoggingTest
42+
43+
- (void)setUp
44+
{
45+
self.logger = [CaptureLogs new];
46+
WPSharedSetLoggingDelegate(self.logger);
47+
}
48+
49+
- (void)testLogging
50+
{
51+
WPSharedLogInfo(@"This is an info log");
52+
WPSharedLogInfo(@"This is an info log %@", @"with an argument");
53+
XCTAssertEqualObjects(self.logger.infoLogs, (@[@"This is an info log", @"This is an info log with an argument"]));
54+
55+
WPSharedLogError(@"This is an error log");
56+
WPSharedLogError(@"This is an error log %@", @"with an argument");
57+
XCTAssertEqualObjects(self.logger.errorLogs, (@[@"This is an error log", @"This is an error log with an argument"]));
58+
}
59+
60+
- (void)testUnimplementedLoggingMethod
61+
{
62+
XCTAssertNoThrow(WPSharedLogVerbose(@"verbose logging is not implemented"));
63+
}
64+
65+
- (void)testNoLogging
66+
{
67+
WPSharedSetLoggingDelegate(nil);
68+
XCTAssertNoThrow(WPSharedLogInfo(@"this log should not be printed"));
69+
XCTAssertEqual(self.logger.infoLogs.count, 0);
70+
}
71+
72+
@end
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import XCTest
2+
3+
@testable import WordPressShared
4+
5+
private class CaptureLogs: NSObject, WordPressLoggingDelegate {
6+
var verboseLogs = [String]()
7+
var debugLogs = [String]()
8+
var infoLogs = [String]()
9+
var warningLogs = [String]()
10+
var errorLogs = [String]()
11+
12+
func logError(_ str: String) {
13+
errorLogs.append(str)
14+
}
15+
16+
func logWarning(_ str: String) {
17+
warningLogs.append(str)
18+
}
19+
20+
func logInfo(_ str: String) {
21+
infoLogs.append(str)
22+
}
23+
24+
func logDebug(_ str: String) {
25+
debugLogs.append(str)
26+
}
27+
28+
func logVerbose(_ str: String) {
29+
verboseLogs.append(str)
30+
}
31+
32+
}
33+
34+
class LoggingTest: XCTestCase {
35+
36+
private let logger = CaptureLogs()
37+
38+
override func setUp() {
39+
WPSharedSetLoggingDelegate(logger)
40+
}
41+
42+
func testLogging() {
43+
WPSharedLogVerbose("This is a verbose log")
44+
WPSharedLogVerbose("This is a verbose log %@", "with an argument")
45+
XCTAssertEqual(self.logger.verboseLogs, ["This is a verbose log", "This is a verbose log with an argument"])
46+
47+
WPSharedLogDebug("This is a debug log")
48+
WPSharedLogDebug("This is a debug log %@", "with an argument")
49+
XCTAssertEqual(self.logger.debugLogs, ["This is a debug log", "This is a debug log with an argument"])
50+
51+
WPSharedLogInfo("This is an info log")
52+
WPSharedLogInfo("This is an info log %@", "with an argument")
53+
XCTAssertEqual(self.logger.infoLogs, ["This is an info log", "This is an info log with an argument"])
54+
55+
WPSharedLogWarning("This is a warning log")
56+
WPSharedLogWarning("This is a warning log %@", "with an argument")
57+
XCTAssertEqual(self.logger.warningLogs, ["This is a warning log", "This is a warning log with an argument"])
58+
59+
WPSharedLogError("This is an error log")
60+
WPSharedLogError("This is an error log %@", "with an argument")
61+
XCTAssertEqual(self.logger.errorLogs, ["This is an error log", "This is an error log with an argument"])
62+
}
63+
64+
func testNoLogging() {
65+
WPSharedSetLoggingDelegate(nil);
66+
XCTAssertNoThrow(WPSharedLogInfo("this log should not be printed"));
67+
XCTAssertEqual(self.logger.infoLogs.count, 0);
68+
}
69+
70+
}

0 commit comments

Comments
 (0)