mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-05-17 10:30:35 +00:00
156 lines
6.0 KiB
Swift
Executable File
156 lines
6.0 KiB
Swift
Executable File
// Copyright © 2017 Schibsted. All rights reserved.
|
|
|
|
import XCTest
|
|
@testable import Layout
|
|
@testable import TestFramework
|
|
|
|
final class ImageExpressionTests: XCTestCase {
|
|
// MARK: Image constants
|
|
|
|
func testImageConstant() {
|
|
let testImage = UIImage()
|
|
let node = LayoutNode(constants: ["testImage": testImage])
|
|
let expression = LayoutExpression(imageExpression: "testImage", for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? UIImage, testImage)
|
|
}
|
|
|
|
func testImageConstantWithComment() {
|
|
let testImage = UIImage()
|
|
let node = LayoutNode(constants: ["testImage": testImage])
|
|
let expression = LayoutExpression(imageExpression: "testImage // test", for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? UIImage, testImage)
|
|
}
|
|
|
|
func testBracedImageConstant() {
|
|
let testImage = UIImage()
|
|
let node = LayoutNode(constants: ["testImage": testImage])
|
|
let expression = LayoutExpression(imageExpression: "{testImage}", for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? UIImage, testImage)
|
|
}
|
|
|
|
func testBracedImageConstantWithComment() {
|
|
let testImage = UIImage()
|
|
let node = LayoutNode(constants: ["testImage": testImage])
|
|
let expression = LayoutExpression(imageExpression: "{testImage // test}", for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? UIImage, testImage)
|
|
}
|
|
|
|
func testBracedImageConstantWithCommentOutsideBraces() {
|
|
let testImage = UIImage()
|
|
let node = LayoutNode(constants: ["testImage": testImage])
|
|
let expression = LayoutExpression(imageExpression: "{testImage} // test", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) // TODO: handle this correctly and/or improve error message
|
|
}
|
|
|
|
// MARK: Image assets
|
|
|
|
func testImageAssetInModuleByID() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "com.LayoutTests:MyImage", for: node)
|
|
XCTAssertNotNil(try expression?.evaluate() as? UIImage)
|
|
}
|
|
|
|
func testImageAssetInModuleByName() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "LayoutTests:MyImage", for: node)
|
|
XCTAssertNotNil(try expression?.evaluate() as? UIImage)
|
|
}
|
|
|
|
func testNonexistentImageAssetInModuleyByName() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "LayoutTests:MyImage2", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
|
|
func testNonexistentImageAssetInBundleByName() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "LayoutTests:MyImage2", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
|
|
func testImageAssetInFrameworkBundleByID() {
|
|
_ = TestFrameworkClass()
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "com.TestFramework:Boxes", for: node)
|
|
XCTAssertNotNil(try expression?.evaluate() as? UIImage)
|
|
}
|
|
|
|
func testImageAssetInFrameworkBundleByName() {
|
|
_ = TestFrameworkClass()
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "TestFramework:Boxes", for: node)
|
|
XCTAssertNotNil(try expression?.evaluate() as? UIImage)
|
|
}
|
|
|
|
func testImageAssetInNonexistentBundleByID() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "com.NotReal:MyImage2", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not locate bundle with identifier"))
|
|
}
|
|
}
|
|
|
|
func testImageAssetInNonexistentBundleByName() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "NotReal:MyImage2", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not locate bundle with name"))
|
|
}
|
|
}
|
|
|
|
// MARK: Bundle variables
|
|
|
|
func testImageAssetInFrameworkBundle() {
|
|
let bundle = Bundle(for: TestFrameworkClass.self)
|
|
let node = LayoutNode(constants: ["bundle": bundle])
|
|
let expression = LayoutExpression(imageExpression: "{bundle}:Boxes", for: node)
|
|
XCTAssertNotNil(try expression?.evaluate() as? UIImage)
|
|
}
|
|
|
|
// MARK: Error messages
|
|
|
|
func testNonexistentImageAssetInMainBundle() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "MyImage", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
|
|
func testQuotedNonexistentImageAssetInMainBundle() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "'MyImage'", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
|
|
func testNonexistentImageVariable() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "{MyImage}", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("Unknown property"))
|
|
}
|
|
}
|
|
|
|
func testNonexistentQuotedImageName() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "{'MyImage'}", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
|
|
func testNonexistentImageAssetWithExpression() {
|
|
let node = LayoutNode()
|
|
let expression = LayoutExpression(imageExpression: "MyImage{5}", for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("not found"))
|
|
}
|
|
}
|
|
}
|