模块化 AppStore 并完善素材管理与个人空间设置。
将会话、权限、位置、收款与排队存储拆分为独立模块,同步更新各 ViewModel 与单元测试,并补充素材管理 UI 与个人空间设置交互。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
47
suixinkanTests/ProfileAvatarCropTests.swift
Normal file
47
suixinkanTests/ProfileAvatarCropTests.swift
Normal file
@ -0,0 +1,47 @@
|
||||
//
|
||||
// ProfileAvatarCropTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
@MainActor
|
||||
/// 空间设置头像裁剪输出测试。
|
||||
final class ProfileAvatarCropTests: XCTestCase {
|
||||
func testCropOutputIs480PixelSquare() throws {
|
||||
let source = UIGraphicsImageRenderer(size: CGSize(width: 800, height: 600)).image { context in
|
||||
UIColor.red.setFill()
|
||||
context.fill(CGRect(x: 0, y: 0, width: 800, height: 600))
|
||||
}
|
||||
let controller = ProfileAvatarCropViewController(image: source) { _ in }
|
||||
controller.loadViewIfNeeded()
|
||||
controller.view.frame = CGRect(x: 0, y: 0, width: 390, height: 844)
|
||||
controller.view.setNeedsLayout()
|
||||
controller.view.layoutIfNeeded()
|
||||
|
||||
let data = try XCTUnwrap(controller.renderedCropData())
|
||||
let image = try XCTUnwrap(UIImage(data: data))
|
||||
XCTAssertEqual(image.size.width * image.scale, 480)
|
||||
XCTAssertEqual(image.size.height * image.scale, 480)
|
||||
}
|
||||
|
||||
func testCropNormalizesImageOrientation() throws {
|
||||
let base = UIGraphicsImageRenderer(size: CGSize(width: 600, height: 800)).image { context in
|
||||
UIColor.blue.setFill()
|
||||
context.fill(CGRect(x: 0, y: 0, width: 600, height: 800))
|
||||
}
|
||||
let cgImage = try XCTUnwrap(base.cgImage)
|
||||
let rotated = UIImage(cgImage: cgImage, scale: 1, orientation: .left)
|
||||
let controller = ProfileAvatarCropViewController(image: rotated) { _ in }
|
||||
controller.loadViewIfNeeded()
|
||||
controller.view.frame = CGRect(x: 0, y: 0, width: 390, height: 844)
|
||||
controller.view.layoutIfNeeded()
|
||||
|
||||
let data = try XCTUnwrap(controller.renderedCropData())
|
||||
let output = try XCTUnwrap(UIImage(data: data))
|
||||
XCTAssertEqual(output.imageOrientation, .up)
|
||||
XCTAssertEqual(output.size.width * output.scale, 480)
|
||||
XCTAssertEqual(output.size.height * output.scale, 480)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user