61 lines
1.6 KiB
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)
|
||
|
}
|