guardia-messenger/node_modules/expo-modules-core/ios/Tests/LoggerSpec.swift
DESKTOP-TKLFCPRython f29f525c77 refactor: 101.79.17.164 → zioinfo.co.kr 전체 도메인 변환 + Manager UI 배포
- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스)
- Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포
- 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:09:17 +09:00

81 lines
2.6 KiB
Swift

// Copyright 2022-present 650 Industries. All rights reserved.
import ExpoModulesTestCore
@testable import ExpoModulesCore
final class LoggerSpec: ExpoSpec {
class TestLogHandler : LogHandler {
struct TestLogHandlerLogEntry : Equatable {
let type: LogType
let message: String
static func == (lhs: TestLogHandlerLogEntry, rhs: TestLogHandlerLogEntry) -> Bool {
// slightly-fuzzy matching for testing only due to prepending emoji to message
return lhs.type == rhs.type && (lhs.message.contains(rhs.message) || rhs.message.contains(lhs.message))
}
}
var logEntries: [TestLogHandlerLogEntry] = []
func clear() {
logEntries = []
}
func log(type: ExpoModulesCore.LogType, _ message: String) {
logEntries.append(TestLogHandlerLogEntry(type: type, message: message))
}
}
override class func spec() {
it("should log various levels") {
let loggerHandler = TestLogHandler()
let logger = Logger(logHandlers: [loggerHandler])
logger.trace("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .trace, message: "hello")
loggerHandler.clear()
logger.debug("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .debug, message: "hello")
loggerHandler.clear()
logger.info("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .info, message: "hello")
loggerHandler.clear()
logger.warn("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .warn, message: "hello")
loggerHandler.clear()
logger.error("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .error, message: "hello")
loggerHandler.clear()
logger.fatal("hello")
expect(loggerHandler.logEntries.first) == TestLogHandler.TestLogHandlerLogEntry(type: .fatal, message: "hello")
loggerHandler.clear()
}
it("should run a timer") {
let loggerHandler = TestLogHandler()
let logger = Logger(logHandlers: [loggerHandler])
let timer = logger.startTimer { duration in
return "\(duration)"
}
RunLoop.current.run(until: Date().addingTimeInterval(0.3))
timer.stop()
let entry = loggerHandler.logEntries.first!
expect(entry.type) == .timer
// remove emoji prefix
let index = entry.message.index(entry.message.startIndex, offsetBy: 2)
expect(Double(entry.message[index...])) > 300
loggerHandler.clear()
}
}
}