131 lines
6.0 KiB
Swift
131 lines
6.0 KiB
Swift
import ExpoModulesTestCore
|
|
|
|
@testable import ExpoModulesCore
|
|
@testable import ExpoImage
|
|
|
|
class ImageResizingSpec: ExpoSpec {
|
|
override class func spec() {
|
|
describe("ideal size") {
|
|
// For simplicity use the same container size for all tests
|
|
let containerSize = CGSize(width: 150, height: 100)
|
|
|
|
context("content size is 300x200") {
|
|
let contentSize = CGSize(width: 300, height: 200)
|
|
let aspectRatio = contentSize.width / contentSize.height
|
|
|
|
it("contains") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .contain)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == aspectRatio // 1.5
|
|
}
|
|
|
|
it("covers") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .cover)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == aspectRatio // 1.5
|
|
}
|
|
|
|
it("fills") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .fill)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
}
|
|
|
|
it("scales down") {
|
|
// Behaves like 'contain' content fit
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .scaleDown)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == aspectRatio // 1.5
|
|
}
|
|
|
|
it("doesn't resize") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .none)
|
|
expect(size.width) == contentSize.width // 300
|
|
expect(size.height) == contentSize.height // 200
|
|
}
|
|
}
|
|
|
|
context("content size is 168x412") {
|
|
let contentSize = CGSize(width: 168, height: 412)
|
|
let aspectRatio = contentSize.width / contentSize.height
|
|
|
|
it("contains") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .contain)
|
|
expect(size.width) == (expected: containerSize.height * aspectRatio, delta: 0.0001) // ~40.77
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == (expected: aspectRatio, delta: 0.0001) // ~0.40
|
|
}
|
|
|
|
it("covers") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .cover)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == (expected: containerSize.width / aspectRatio, delta: 0.0001) // ~367.85
|
|
expect(size.width / size.height) == aspectRatio // ~0.40
|
|
}
|
|
|
|
it("fills") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .fill)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
}
|
|
|
|
it("scales down") {
|
|
// Behaves like 'contain' content fit
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .scaleDown)
|
|
expect(size.width) == (expected: containerSize.height * aspectRatio, delta: 0.0001) // ~40.77
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == (expected: aspectRatio, delta: 0.0001) // ~0.40
|
|
}
|
|
|
|
it("doesn't resize") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .none)
|
|
expect(size.width) == contentSize.width // 168
|
|
expect(size.height) == contentSize.height // 412
|
|
}
|
|
}
|
|
|
|
context("content size is 37x21") {
|
|
let contentSize = CGSize(width: 37, height: 21)
|
|
let aspectRatio = contentSize.width / contentSize.height
|
|
|
|
it("contains") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .contain)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == (expected: containerSize.width / aspectRatio, delta: 0.0001) // ~85.13
|
|
expect(size.width / size.height) == (expected: aspectRatio, delta: 0.0001) // ~1.76
|
|
}
|
|
|
|
it("covers") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .cover)
|
|
expect(size.width) == containerSize.height * aspectRatio // ~176.19
|
|
expect(size.height) == containerSize.height // 100
|
|
expect(size.width / size.height) == aspectRatio // ~1.76
|
|
}
|
|
|
|
it("fills") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .fill)
|
|
expect(size.width) == containerSize.width // 150
|
|
expect(size.height) == containerSize.height // 100
|
|
}
|
|
|
|
it("scales down") {
|
|
// Behaves like `none` content fit
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .scaleDown)
|
|
expect(size.width) == contentSize.width // 37
|
|
expect(size.height) == contentSize.height // 21
|
|
expect(size.width / size.height) == aspectRatio // ~1.76
|
|
}
|
|
|
|
it("doesn't resize") {
|
|
let size = idealSize(contentPixelSize: contentSize, containerSize: containerSize, contentFit: .none)
|
|
expect(size.width) == contentSize.width // 37
|
|
expect(size.height) == contentSize.height // 21
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|