Gifu/GifuTests/GifuTests.swift

61 lines
1.6 KiB
Swift

import XCTest
import ImageIO
@testable import Gifu
private let imageData = testImageDataNamed("mugen.gif")
private let staticImage = UIImage(data: imageData!)
class GifuTests: XCTestCase {
var animator: Animator?
var originalFrameCount: Int?
var preloadedFrameCount: Int?
override func setUp() {
super.setUp()
animator = Animator(data: imageData!, size: CGSizeZero, contentMode: .ScaleToFill, framePreloadCount: 20)
animator!.prepareFrames()
originalFrameCount = Int(CGImageSourceGetCount(animator!.imageSource))
preloadedFrameCount = animator!.animatedFrames.count
}
override func tearDown() {
super.tearDown()
}
func testIsAnimatable() {
XCTAssertTrue(animator!.isAnimatable)
}
func testFramePreload() {
XCTAssertLessThanOrEqual(preloadedFrameCount!, originalFrameCount!)
}
func testFrameAtIndex() {
XCTAssertNotNil(animator!.frameAtIndex(preloadedFrameCount! - 1))
}
func testFrameDurationPrecision() {
let image = animator!.frameAtIndex(5)
XCTAssertTrue((image!.duration - 0.05) < 0.00001)
}
func testFrameSize() {
let image = animator!.frameAtIndex(5)
XCTAssertEqual(image!.size, staticImage!.size)
}
func testPrepareFramesPerformance() {
let tempAnimator = Animator(data: imageData!, size: CGSizeZero, contentMode: .ScaleToFill, framePreloadCount: 50)
self.measureBlock() {
tempAnimator.prepareFrames()
}
}
}
private func testImageDataNamed(name: String) -> NSData? {
let testBundle = NSBundle(forClass: GifuTests.self)
let imagePath = testBundle.bundleURL.URLByAppendingPathComponent(name)
return NSData(contentsOfURL: imagePath)
}