From ce546d00726b5fbe89454cde0d8fd15f48099e2c Mon Sep 17 00:00:00 2001 From: Wojciech Nagrodzki <278594+wnagrodzki@users.noreply.github.com> Date: Sun, 26 Aug 2018 11:24:15 +0200 Subject: [PATCH] Added AgregateLoggerTests --- Logger.xcodeproj/project.pbxproj | 4 ++ UnitTests/AgregateLoggerTests.swift | 68 +++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 UnitTests/AgregateLoggerTests.swift diff --git a/Logger.xcodeproj/project.pbxproj b/Logger.xcodeproj/project.pbxproj index 14a8da4..69657b4 100644 --- a/Logger.xcodeproj/project.pbxproj +++ b/Logger.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 2EBF4B582122B598008E4117 /* FileWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EBF4B552122B598008E4117 /* FileWriter.swift */; }; 2EBF4B592122B598008E4117 /* Logrotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EBF4B562122B598008E4117 /* Logrotate.swift */; }; 2ED077D721329CA30058EEFC /* LoggetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ED077D621329CA30058EEFC /* LoggetTests.swift */; }; + 2ED077D92132A4820058EEFC /* AgregateLoggerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ED077D82132A4820058EEFC /* AgregateLoggerTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -60,6 +61,7 @@ 2EBF4B552122B598008E4117 /* FileWriter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileWriter.swift; sourceTree = ""; }; 2EBF4B562122B598008E4117 /* Logrotate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logrotate.swift; sourceTree = ""; }; 2ED077D621329CA30058EEFC /* LoggetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggetTests.swift; sourceTree = ""; }; + 2ED077D82132A4820058EEFC /* AgregateLoggerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgregateLoggerTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -86,6 +88,7 @@ children = ( 2E58D35C21316C3500BEF81A /* LogStringConvertibleTests.swift */, 2ED077D621329CA30058EEFC /* LoggetTests.swift */, + 2ED077D82132A4820058EEFC /* AgregateLoggerTests.swift */, 2E58D35E21316C3500BEF81A /* Info.plist */, ); path = UnitTests; @@ -234,6 +237,7 @@ buildActionMask = 2147483647; files = ( 2E58D35D21316C3500BEF81A /* LogStringConvertibleTests.swift in Sources */, + 2ED077D92132A4820058EEFC /* AgregateLoggerTests.swift in Sources */, 2ED077D721329CA30058EEFC /* LoggetTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/UnitTests/AgregateLoggerTests.swift b/UnitTests/AgregateLoggerTests.swift new file mode 100644 index 0000000..c3c2704 --- /dev/null +++ b/UnitTests/AgregateLoggerTests.swift @@ -0,0 +1,68 @@ +// +// MIT License +// +// Copyright (c) 2018 Wojciech Nagrodzki +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +import XCTest +@testable import Logger + +class AgregateLoggerTests: XCTestCase { + + func testCallForwarding() { + let loggerA = LoggerMock() + let loggerB = LoggerMock() + let agregateLogger = AgregateLogger(loggers: [loggerA, loggerB]) + agregateLogger.log("0", level: .emergency) + agregateLogger.log("1", level: .alert) + agregateLogger.log("2", level: .critical) + agregateLogger.log("3", level: .error) + agregateLogger.log("4", level: .warning) + agregateLogger.log("5", level: .notice) + agregateLogger.log("6", level: .informational) + agregateLogger.log("7", level: .debug) + XCTAssertEqual(loggerA, loggerB) + } +} + +private class LoggerMock: Logger { + + struct Log: Equatable { + let time: Date + let level: LogLevel + let location: String + let message: String + } + + private var logs = [Log]() + + func log(time: Date, level: LogLevel, location: String, message: @autoclosure () -> String) { + let log = Log(time: time, level: level, location: location, message: message()) + logs.append(log) + } +} + +extension LoggerMock: Equatable { + + static func == (lhs: LoggerMock, rhs: LoggerMock) -> Bool { + return lhs.logs == rhs.logs + } +}