From 44ce1c8644f6488868080f43b622b088559610c4 Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Sat, 10 Oct 2026 12:45:21 +0200 Subject: [PATCH] test(image): Migrate specs to Swift Testing --- Package.swift | 1 + .../Image/PDFImageEquatableTests.swift | 55 ++++++++++ .../Image/PDFImageSizeFitTests.swift | 26 +++++ .../Image/PDFImageSizeFit_Spec.swift | 23 ---- Tests/TPPDFTests/Image/PDFImageTests.swift | 54 +++++++++ .../Image/PDFImage_Equatable_Spec.swift | 103 ------------------ Tests/TPPDFTests/Image/PDFImage_Spec.swift | 75 ------------- Tests/TPPDFTests/resources/image-fixture.jpg | Bin 0 -> 787 bytes 8 files changed, 136 insertions(+), 201 deletions(-) create mode 100644 Tests/TPPDFTests/Image/PDFImageEquatableTests.swift create mode 100644 Tests/TPPDFTests/Image/PDFImageSizeFitTests.swift delete mode 100644 Tests/TPPDFTests/Image/PDFImageSizeFit_Spec.swift create mode 100644 Tests/TPPDFTests/Image/PDFImageTests.swift delete mode 100644 Tests/TPPDFTests/Image/PDFImage_Equatable_Spec.swift delete mode 100644 Tests/TPPDFTests/Image/PDFImage_Spec.swift create mode 100644 Tests/TPPDFTests/resources/image-fixture.jpg diff --git a/Package.swift b/Package.swift index 0c312d51c..3a4bbdbd1 100644 --- a/Package.swift +++ b/Package.swift @@ -18,6 +18,7 @@ if isTestingEnabled { "Nimble", ], resources: [ .copy("resources/sample.pdf"), + .copy("resources/image-fixture.jpg"), ]), .testTarget(name: "TPPDFIntegrationTests", dependencies: [ "TPPDF", diff --git a/Tests/TPPDFTests/Image/PDFImageEquatableTests.swift b/Tests/TPPDFTests/Image/PDFImageEquatableTests.swift new file mode 100644 index 000000000..6c0325229 --- /dev/null +++ b/Tests/TPPDFTests/Image/PDFImageEquatableTests.swift @@ -0,0 +1,55 @@ +// +// PDFImageEquatableTests.swift +// TPPDF +// +// Created by Philip Niedertscheider on 11.12.2017. +// Copyright © 2016-2026 techprimate GmbH. All rights reserved. +// + +import CoreGraphics +import Foundation +import Testing +@testable import TPPDF + +struct PDFImageEquatableTests { + @Test func imagesWithSameSettingsAreEqual() throws { + // Arrange + let url = try #require(Bundle.module.url(forResource: "image-fixture", withExtension: "jpg")) + let image = try #require(Image(data: Data(contentsOf: url))) + let caption = PDFSimpleText(text: "EXAMPLE") + let size = CGSize(width: 100, height: 100) + let pdfImage = PDFImage(image: image, caption: caption, size: size, sizeFit: .height, quality: 0.9) + let otherImage = PDFImage(image: image, caption: caption, size: size, sizeFit: .height, quality: 0.9) + + // Act + let isEqual = pdfImage == otherImage + + // Assert + #expect(isEqual) + } + + @Test(arguments: ["image", "caption", "missingCaption", "size", "sizeFit", "quality"]) + func imagesWithDifferentSettingsAreUnequal(property: String) throws { + // Arrange + let url = try #require(Bundle.module.url(forResource: "image-fixture", withExtension: "jpg")) + let image = try #require(Image(data: Data(contentsOf: url))) + let caption = PDFSimpleText(text: "EXAMPLE") + let size = CGSize(width: 100, height: 100) + let pdfImage = PDFImage(image: image, caption: caption, size: size, sizeFit: .height, quality: 0.9) + let otherImage = PDFImage(image: image, caption: caption, size: size, sizeFit: .height, quality: 0.9) + switch property { + case "image": otherImage.image = Image() + case "caption": otherImage.caption = PDFSimpleText(text: "DIFFERENT") + case "missingCaption": otherImage.caption = nil + case "size": otherImage.size = CGSize(width: 20, height: 30) + case "sizeFit": otherImage.sizeFit = .width + default: otherImage.quality = 0.3 + } + + // Act + let isEqual = pdfImage == otherImage + + // Assert + #expect(!isEqual) + } +} diff --git a/Tests/TPPDFTests/Image/PDFImageSizeFitTests.swift b/Tests/TPPDFTests/Image/PDFImageSizeFitTests.swift new file mode 100644 index 000000000..4ed2a8634 --- /dev/null +++ b/Tests/TPPDFTests/Image/PDFImageSizeFitTests.swift @@ -0,0 +1,26 @@ +// +// PDFImageSizeFitTests.swift +// TPPDF +// +// Created by Philip Niedertscheider on 11.13.2017. +// Copyright © 2016-2026 techprimate GmbH. All rights reserved. +// + +import Testing +@testable import TPPDF + +struct PDFImageSizeFitTests { + @Test(arguments: [0, 1, 2]) + func initializingImagePreservesEachFittingMode(modeIndex: Int) { + // Arrange + let fittingModes: [PDFImageSizeFit] = [.width, .height, .widthHeight] + let fittingMode = fittingModes[modeIndex] + let image = Image() + + // Act + let pdfImage = PDFImage(image: image, sizeFit: fittingMode) + + // Assert + #expect(pdfImage.sizeFit == fittingMode) + } +} diff --git a/Tests/TPPDFTests/Image/PDFImageSizeFit_Spec.swift b/Tests/TPPDFTests/Image/PDFImageSizeFit_Spec.swift deleted file mode 100644 index 41aa2fae1..000000000 --- a/Tests/TPPDFTests/Image/PDFImageSizeFit_Spec.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// PDFImageSizeFit_Spec.swift -// TPPDF -// -// Created by Philip Niedertscheider on 11.13.2017. -// Copyright © 2016-2026 techprimate GmbH. All rights reserved. -// - -import Nimble -import Quick -@testable import TPPDF - -class PDFImageSizeFit_Spec: QuickSpec { - override func spec() { - describe("PDFImageSizeFit") { - it("should have enum values") { - expect(PDFImageSizeFit.width).toNot(beNil()) - expect(PDFImageSizeFit.height).toNot(beNil()) - expect(PDFImageSizeFit.widthHeight).toNot(beNil()) - } - } - } -} diff --git a/Tests/TPPDFTests/Image/PDFImageTests.swift b/Tests/TPPDFTests/Image/PDFImageTests.swift new file mode 100644 index 000000000..dc30ba166 --- /dev/null +++ b/Tests/TPPDFTests/Image/PDFImageTests.swift @@ -0,0 +1,54 @@ +// +// PDFImageTests.swift +// TPPDF +// +// Created by Philip Niedertscheider on 11.12.2017. +// Copyright © 2016-2026 techprimate GmbH. All rights reserved. +// + +import CoreGraphics +import Foundation +import Testing +@testable import TPPDF + +struct PDFImageTests { + @Test func initializingWithOnlyImageUsesDefaultSettings() throws { + // Arrange + let url = try #require(Bundle.module.url(forResource: "image-fixture", withExtension: "jpg")) + let image = try #require(Image(data: Data(contentsOf: url))) + + // Act + let pdfImage = PDFImage(image: image) + + // Assert + #expect(pdfImage.image == image) + #expect(pdfImage.caption == nil) + #expect(pdfImage.sizeFit == .widthHeight) + #expect(pdfImage.quality == 0.85) + #expect(pdfImage.options == [.resize, .compress]) + } + + @Test func initializingWithCustomSettingsPreservesAllValues() throws { + // Arrange + let url = try #require(Bundle.module.url(forResource: "image-fixture", withExtension: "jpg")) + let image = try #require(Image(data: Data(contentsOf: url))) + let caption = PDFSimpleText(text: "EXAMPLE") + let size = CGSize(width: 100, height: 100) + let fittingMode = PDFImageSizeFit.height + let quality: CGFloat = 0.9 + let options: PDFImageOptions = [.resize] + + // Act + let pdfImage = PDFImage( + image: image, caption: caption, size: size, sizeFit: fittingMode, quality: quality, options: options + ) + + // Assert + #expect(pdfImage.image == image) + #expect(pdfImage.caption as? PDFSimpleText == caption) + #expect(pdfImage.size == size) + #expect(pdfImage.sizeFit == fittingMode) + #expect(pdfImage.quality == quality) + #expect(pdfImage.options == options) + } +} diff --git a/Tests/TPPDFTests/Image/PDFImage_Equatable_Spec.swift b/Tests/TPPDFTests/Image/PDFImage_Equatable_Spec.swift deleted file mode 100644 index ff7fab1b6..000000000 --- a/Tests/TPPDFTests/Image/PDFImage_Equatable_Spec.swift +++ /dev/null @@ -1,103 +0,0 @@ -// -// PDFImage_Equatable_Spec.swift -// TPPDF -// -// Created by Philip Niedertscheider on 11.12.2017. -// Copyright © 2016-2026 techprimate GmbH. All rights reserved. -// - -import CoreGraphics -import Foundation -import Nimble -import Quick -@testable import TPPDF - -class PDFImage_Equatable_Spec: QuickSpec { - // swiftlint:disable closure_body_length function_body_length - override func spec() { - describe("PDFImage") { - // swiftlint:disable:next line_length - let base64String = Data("/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgAAQABAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMABgYGBgYGCgYGCg4KCgoOEg4ODg4SFxISEhISFxwXFxcXFxccHBwcHBwcHCIiIiIiIicnJycnLCwsLCwsLCwsLP/bAEMBBwcHCwoLEwoKEy4fGh8uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLv/dAAQAAf/aAAwDAQACEQMRAD8A6+iiivxY/Sz/2Q==".utf8) - let data = Data(base64Encoded: base64String)! - let image = Image(data: data)! - - let caption = PDFSimpleText(text: "EXAMPLE") - let size = CGSize(width: 100, height: 100) - let fit = PDFImageSizeFit.height - let quality: CGFloat = 0.9 - - let pdfImage = PDFImage(image: image, caption: caption, size: size, sizeFit: fit, quality: quality) - - it("is equal") { - let otherPdfImage = PDFImage(image: image, - caption: caption, - size: size, - sizeFit: fit, - quality: quality) - - expect(pdfImage) == otherPdfImage - } - - it("is not equal with different image") { - let otherPdfImage = PDFImage(image: Image(), - caption: caption, - size: size, - sizeFit: fit, - quality: quality) - - expect(pdfImage) != otherPdfImage - } - - it("is not equal with different caption") { - let otherPdfImage = PDFImage(image: image, - caption: PDFSimpleText(text: "DIFFERENT"), - size: size, - sizeFit: fit, - quality: quality) - - expect(pdfImage) != otherPdfImage - } - - it("is not equal with one missing caption") { - let otherPdfImage = PDFImage(image: image, - caption: nil, - size: size, - sizeFit: fit, - quality: quality) - - expect(pdfImage) != otherPdfImage - } - - it("is not equal with different size") { - let otherPdfImage = PDFImage(image: image, - caption: caption, - size: CGSize(width: 20, height: 30), - sizeFit: fit, - quality: quality) - - expect(pdfImage) != otherPdfImage - } - - it("is not equal with different size fit") { - let otherPdfImage = PDFImage(image: image, - caption: caption, - size: size, - sizeFit: PDFImageSizeFit.width, - quality: quality) - - expect(pdfImage) != otherPdfImage - } - - it("is not equal with different quality") { - let otherPdfImage = PDFImage(image: image, - caption: caption, - size: size, - sizeFit: fit, - quality: 0.3) - - expect(pdfImage) != otherPdfImage - } - } - } - // swiftlint:enable closure_body_length function_body_length -} diff --git a/Tests/TPPDFTests/Image/PDFImage_Spec.swift b/Tests/TPPDFTests/Image/PDFImage_Spec.swift deleted file mode 100644 index 50a454c0c..000000000 --- a/Tests/TPPDFTests/Image/PDFImage_Spec.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// PDFImage_Spec.swift -// TPPDF -// -// Created by Philip Niedertscheider on 11.12.2017. -// Copyright © 2016-2026 techprimate GmbH. All rights reserved. -// - -import CoreGraphics -import Foundation -import Nimble -import Quick -@testable import TPPDF - -class PDFImage_Spec: QuickSpec { - // swiftlint:disable closure_body_length - override func spec() { - describe("PDFImage") { - // swiftlint:disable:next line_length - let base64String = Data("/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgAAQABAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMABgYGBgYGCgYGCg4KCgoOEg4ODg4SFxISEhISFxwXFxcXFxccHBwcHBwcHCIiIiIiIicnJycnLCwsLCwsLCwsLP/bAEMBBwcHCwoLEwoKEy4fGh8uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLv/dAAQAAf/aAAwDAQACEQMRAD8A6+iiivxY/Sz/2Q==".utf8) - let data = Data(base64Encoded: base64String)! - let image = Image(data: data)! - - let caption = PDFSimpleText(text: "EXAMPLE") - let size = CGSize(width: 100, height: 100) - let fit = PDFImageSizeFit.height - let quality: CGFloat = 0.9 - let options: PDFImageOptions = [.resize] - - var pdfImage: PDFImage! - - beforeEach { - pdfImage = PDFImage(image: image, caption: caption, size: size, sizeFit: fit, quality: quality, options: options) - } - - context("initializer") { - it("can be initialized with only an image") { - pdfImage = PDFImage(image: image) - expect(pdfImage.image) == image - expect(pdfImage.caption).to(beNil()) - expect(pdfImage.sizeFit) == PDFImageSizeFit.widthHeight - expect(pdfImage.quality) == 0.85 - expect(pdfImage.options) == [.resize, .compress] - } - } - - context("variables") { - it("has an image") { - expect(pdfImage.image) == image - } - - it("might have a caption") { - expect(pdfImage.caption as? PDFSimpleText) == caption - } - - it("has a size") { - expect(pdfImage.size) == size - } - - it("has a sizeFit") { - expect(pdfImage.sizeFit) == fit - } - - it("has a quality") { - expect(pdfImage.quality) == quality - } - - it("has options") { - expect(pdfImage.options) == options - } - } - } - } - // swiftlint:enable closure_body_length -} diff --git a/Tests/TPPDFTests/resources/image-fixture.jpg b/Tests/TPPDFTests/resources/image-fixture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c3687cb9c7fe7a724ef6bb72a3ea0a4245aad78a GIT binary patch literal 787 zcmex=kR1VV=P zOa>M(n}I|7ut5s{zh$rp$jC3rFV4s>P%zdrV6brV^ko5= z1_WTXDwrv7MYiW=Kf@-LmkpdV-u!T?`+tBzkOO2rGoum%lOQ9rAmjfd4Dvu1u`+@I zSR0UFWMXDvWn<^yYIx{m93o|P#$Qs64pgaSMAghp~p(C4cU?RIxp@>oA z#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`?sbyknW^Q3==I-I?6&w;879J59 zm7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHscsne#9glAUcUPH>GPMb-@gC&`3vMPV0c2j z1tcLpL-Us)&|gd}EX*wIAb&A3m4iGk$ik{<$R^|%$evgztYp;4A>uS~;l_iU%Emz- zM3agxa*3&!JXHM%@*3D@#CfcVET6$WhVa*I24@B~FyLZiG%Ku literal 0 HcmV?d00001