From f595513ea984817eb410da893e73e70d595e9ee5 Mon Sep 17 00:00:00 2001 From: Maximilian Blochberger Date: Wed, 9 Aug 2017 18:28:58 +0200 Subject: [PATCH] Add test for maximum capacity This resolves issue #42. --- QRCodeTests/QRCodeTests.swift | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/QRCodeTests/QRCodeTests.swift b/QRCodeTests/QRCodeTests.swift index d1cf844..1beaa55 100644 --- a/QRCodeTests/QRCodeTests.swift +++ b/QRCodeTests/QRCodeTests.swift @@ -92,4 +92,37 @@ class QRCodeTests: XCTestCase { XCTAssert(image != nil, "image is nil") XCTAssertEqual(image!.size, size) } + + func testCapacity() { + let limitBytes = 2953 + + let maximumBytes = randomBytes(count: limitBytes)! + let tooManyBytes = randomBytes(count: limitBytes + 1)! + + let codeWithMaximumBytes = QRCode(maximumBytes) + let codeWithTooManyBytes = QRCode(tooManyBytes) + + XCTAssertEqual(maximumBytes, codeWithMaximumBytes.data, "data is not equal") + XCTAssertEqual(tooManyBytes, codeWithTooManyBytes.data, "data is not equal") + + XCTAssertNotNil(codeWithMaximumBytes.image) + XCTAssertNil(codeWithTooManyBytes.image) + } +} + +// MARK: - Helpers + +func randomBytes(count: Int) -> Data? { + var bytes = Data(count: count) + let status = bytes.withUnsafeMutableBytes { + bytesPtr in + + SecRandomCopyBytes(kSecRandomDefault, bytes.count, bytesPtr) + } + + guard status == errSecSuccess else { + return nil + } + + return bytes }