Signal-iOS/SignalServiceKit/tests/Util/NSData+ImageTest.swift
Evan Hahn 42055d6f50 Actually test an APNG in detector code
This change should have no user impact.

`NSData#isAnimatedPngData` detects whether something is an animated
PNG. Its tests don't actually check a real APNG, though. This adds such
a test.
2022-09-12 20:27:53 +00:00

54 lines
1.7 KiB
Swift

//
// Copyright (c) 2022 Open Whisper Systems. All rights reserved.
//
import Foundation
import XCTest
@testable import SignalServiceKit
class NSDataImageTests: XCTestCase {
func testIsAnimatedPngData_png() {
let image = UIImage(color: .red, size: CGSize(width: 1, height: 1))
let data = image.pngData()!
let isApng = (data as NSData).isAnimatedPngData()
XCTAssertEqual(isApng?.boolValue, false)
}
func testIsAnimatedPngData_apng() {
let data: Data = {
let testBundle = Bundle(for: Self.self)
let url = testBundle.url(forResource: "test-apng", withExtension: "png")!
return try! Data(contentsOf: url)
}()
let isApng = (data as NSData).isAnimatedPngData()
XCTAssertEqual(isApng?.boolValue, true)
}
func testIsAnimatedPngData_invalid() {
do {
let data = Randomness.generateRandomBytes(0)
let isApng: NSNumber? = (data as NSData).isAnimatedPngData()
XCTAssertNil(isApng)
}
do {
let data = Randomness.generateRandomBytes(1)
let isApng: NSNumber? = (data as NSData).isAnimatedPngData()
XCTAssertNil(isApng)
}
do {
let data = Randomness.generateRandomBytes(64)
let isApng: NSNumber? = (data as NSData).isAnimatedPngData()
Logger.verbose("isApng: \(String(describing: isApng))")
XCTAssertNil(isApng)
}
do {
let data = Randomness.generateRandomBytes(1024)
let isApng: NSNumber? = (data as NSData).isAnimatedPngData()
Logger.verbose("isApng: \(String(describing: isApng))")
XCTAssertNil(isApng)
}
}
}