Publish v1.0
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Reviewed-on: #1
This commit is contained in:
@ -0,0 +1,85 @@
|
||||
//
|
||||
// ColorExtensionGeneratorTests.swift
|
||||
//
|
||||
//
|
||||
// Created by Thibaut Schmitt on 05/09/2022.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import XCTest
|
||||
import ToolCore
|
||||
|
||||
@testable import ResgenSwift
|
||||
|
||||
final class ColorExtensionGeneratorTests: XCTestCase {
|
||||
|
||||
func testGeneratedExtensionContent() {
|
||||
// Given
|
||||
let colors = [
|
||||
ParsedColor(name: "colorOne", light: "#FF00FF", dark: "#00FF00"),
|
||||
ParsedColor(name: "colorTwo", light: "#F0F0F0", dark: "#0F0F0F")
|
||||
]
|
||||
|
||||
// When
|
||||
let extensionContent = ColorExtensionGenerator.getExtensionContent(colors: colors,
|
||||
staticVar: false,
|
||||
extensionName: "GenColors")
|
||||
|
||||
// Expect
|
||||
let expect = """
|
||||
// Generated by ResgenSwift.Color \(ResgenSwiftVersion)
|
||||
|
||||
import UIKit
|
||||
|
||||
extension GenColors {
|
||||
|
||||
/// Color colorOne is #FF00FF (light) or #00FF00 (dark)"
|
||||
@objc var colorOne: UIColor {
|
||||
UIColor(named: "colorOne")!
|
||||
}
|
||||
|
||||
/// Color colorTwo is #F0F0F0 (light) or #0F0F0F (dark)"
|
||||
@objc var colorTwo: UIColor {
|
||||
UIColor(named: "colorTwo")!
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
XCTAssertEqual(extensionContent.adaptForXCTest(), expect.adaptForXCTest())
|
||||
}
|
||||
|
||||
func testGeneratedExtensionContentForStaticVar() {
|
||||
// Given
|
||||
let colors = [
|
||||
ParsedColor(name: "colorOne", light: "#FF00FF", dark: "#00FF00"),
|
||||
ParsedColor(name: "colorTwo", light: "#F0F0F0", dark: "#0F0F0F")
|
||||
]
|
||||
|
||||
// When
|
||||
let extensionContent = ColorExtensionGenerator.getExtensionContent(colors: colors,
|
||||
staticVar: true,
|
||||
extensionName: "GenColor")
|
||||
|
||||
// Expect
|
||||
let expect = """
|
||||
// Generated by ResgenSwift.Color \(ResgenSwiftVersion)
|
||||
|
||||
import UIKit
|
||||
|
||||
extension GenColor {
|
||||
|
||||
/// Color colorOne is #FF00FF (light) or #00FF00 (dark)"
|
||||
static var colorOne: UIColor {
|
||||
UIColor(named: "colorOne")!
|
||||
}
|
||||
|
||||
/// Color colorTwo is #F0F0F0 (light) or #0F0F0F (dark)"
|
||||
static var colorTwo: UIColor {
|
||||
UIColor(named: "colorTwo")!
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
XCTAssertEqual(extensionContent.adaptForXCTest(), expect.adaptForXCTest())
|
||||
}
|
||||
}
|
98
Tests/ResgenSwiftTests/Colors/ColorFileParserTests.swift
Normal file
98
Tests/ResgenSwiftTests/Colors/ColorFileParserTests.swift
Normal file
@ -0,0 +1,98 @@
|
||||
//
|
||||
// ColorFileParserTests.swift
|
||||
//
|
||||
//
|
||||
// Created by Thibaut Schmitt on 05/09/2022.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import ResgenSwift
|
||||
|
||||
final class ColorFileParserTests: XCTestCase {
|
||||
func testCorrectFormat_lightStyle() throws {
|
||||
// Given
|
||||
let inputWithEqualSeparator = """
|
||||
red1 = #FF0000
|
||||
red2 = #FFFF0000
|
||||
|
||||
red3 = #FF0000
|
||||
red4 = #FFFF0000
|
||||
|
||||
red5 = #FF0000 #0000FF
|
||||
red6 = #FFFF0000 #FF0000FF
|
||||
"""
|
||||
.components(separatedBy: CharacterSet.newlines)
|
||||
|
||||
let inputWithSpaceSeparator = """
|
||||
red1 #FF0000
|
||||
red2 #FFFF0000
|
||||
|
||||
red3 #FF0000
|
||||
red4 #FFFF0000
|
||||
|
||||
red5 #FF0000 #0000FF
|
||||
red6 #FFFF0000 #FF0000FF
|
||||
"""
|
||||
.components(separatedBy: CharacterSet.newlines)
|
||||
|
||||
// When
|
||||
let colorsFromEqual = ColorFileParser.parseLines(lines: inputWithEqualSeparator,
|
||||
colorStyle: .light)
|
||||
let colorsFromSpace = ColorFileParser.parseLines(lines: inputWithSpaceSeparator,
|
||||
colorStyle: .light)
|
||||
|
||||
// Expect
|
||||
let colorsValues: [(name: String, light: String, dark: String)] = [
|
||||
(name: "red1", light: "#FF0000", dark: "#FF0000"),
|
||||
(name: "red2", light: "#FFFF0000", dark: "#FFFF0000"),
|
||||
(name: "red3", light: "#FF0000", dark: "#FF0000"),
|
||||
(name: "red4", light: "#FFFF0000", dark: "#FFFF0000"),
|
||||
(name: "red5", light: "#FF0000", dark: "#FF0000"),
|
||||
(name: "red6", light: "#FFFF0000", dark: "#FFFF0000"),
|
||||
]
|
||||
|
||||
|
||||
var foundColors = 0
|
||||
let allParsedColors = colorsFromEqual + colorsFromSpace
|
||||
for parsedColor in allParsedColors {
|
||||
let testValues = colorsValues.first { $0.name == parsedColor.name }
|
||||
if let testValues = testValues {
|
||||
foundColors += 1
|
||||
XCTAssertEqual(parsedColor.name, testValues.name)
|
||||
XCTAssertEqual(parsedColor.light, testValues.light)
|
||||
XCTAssertEqual(parsedColor.dark, testValues.dark)
|
||||
}
|
||||
}
|
||||
|
||||
XCTAssertEqual(foundColors, 12)
|
||||
}
|
||||
|
||||
func testCorrectFormat_allColorStyle() throws {
|
||||
// Given
|
||||
let input = """
|
||||
lightOnly #FF0000
|
||||
lightDark #FF0000 #0000FF
|
||||
"""
|
||||
.components(separatedBy: CharacterSet.newlines)
|
||||
|
||||
// When
|
||||
let parsedColors = ColorFileParser.parseLines(lines: input,
|
||||
colorStyle: .all)
|
||||
|
||||
// Expect
|
||||
let colorRed1 = parsedColors.first { $0.name == "lightOnly" }
|
||||
let colorRed2 = parsedColors.first { $0.name == "lightDark" }
|
||||
|
||||
XCTAssertNotNil(colorRed1)
|
||||
XCTAssertEqual(colorRed1?.name, "lightOnly")
|
||||
XCTAssertEqual(colorRed1?.light, "#FF0000")
|
||||
XCTAssertEqual(colorRed1?.dark, "#FF0000")
|
||||
|
||||
XCTAssertNotNil(colorRed2)
|
||||
XCTAssertEqual(colorRed2?.name, "lightDark")
|
||||
XCTAssertEqual(colorRed2?.light, "#FF0000")
|
||||
XCTAssertEqual(colorRed2?.dark, "#0000FF")
|
||||
}
|
||||
}
|
91
Tests/ResgenSwiftTests/Colors/ParsedColorTests.swift
Normal file
91
Tests/ResgenSwiftTests/Colors/ParsedColorTests.swift
Normal file
@ -0,0 +1,91 @@
|
||||
//
|
||||
// ParsedColorTests.swift
|
||||
//
|
||||
//
|
||||
// Created by Thibaut Schmitt on 05/09/2022.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import XCTest
|
||||
|
||||
@testable import ResgenSwift
|
||||
|
||||
final class ParsedColorTests: XCTestCase {
|
||||
|
||||
func testGeneratedProperty() {
|
||||
// Given
|
||||
let color = ParsedColor(name: "red", light: "#FF0000", dark: "#0000FF")
|
||||
|
||||
// When
|
||||
let property = color.getColorProperty()
|
||||
|
||||
// Expect
|
||||
let expect = """
|
||||
/// Color red is #FF0000 (light) or #0000FF (dark)"
|
||||
@objc var red: UIColor {
|
||||
UIColor(named: "red")!
|
||||
}
|
||||
"""
|
||||
|
||||
XCTAssertEqual(property.adaptForXCTest(), expect.adaptForXCTest())
|
||||
}
|
||||
|
||||
func testGeneratedStaticProperty() {
|
||||
// Given
|
||||
let color = ParsedColor(name: "red", light: "#FF0000", dark: "#0000FF")
|
||||
|
||||
// When
|
||||
let property = color.getColorStaticProperty()
|
||||
|
||||
// Expect
|
||||
let expect = """
|
||||
/// Color red is #FF0000 (light) or #0000FF (dark)"
|
||||
static var red: UIColor {
|
||||
UIColor(named: "red")!
|
||||
}
|
||||
"""
|
||||
|
||||
XCTAssertEqual(property.adaptForXCTest(), expect.adaptForXCTest())
|
||||
}
|
||||
|
||||
func testGeneratedColorAsset() {
|
||||
// Given
|
||||
let color = ParsedColor(name: "red", light: "#FF0000", dark: "#0000FF")
|
||||
|
||||
// When
|
||||
let contentJson = color.contentsJSON()
|
||||
guard let data = contentJson.data(using: .utf8),
|
||||
let parsedJson = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
|
||||
XCTFail("Cannot convert `contentJSON` string to Data")
|
||||
return
|
||||
}
|
||||
|
||||
let colors = parsedJson["colors"] as! [Any]
|
||||
|
||||
for color in colors {
|
||||
guard let color = color as? [String: Any] else {
|
||||
XCTFail("Cannot convert color object to Dictonnary")
|
||||
return
|
||||
}
|
||||
if let appearance = color["appearances"] as? [Any] {
|
||||
// Appearance is define only for dark appearance
|
||||
let firstAppearance = appearance.first! as! [String: Any]
|
||||
XCTAssertEqual(firstAppearance["value"] as! String, "dark")
|
||||
|
||||
let subColor = color["color"] as! [String: Any]
|
||||
let components = subColor["components"] as! [String: Any]
|
||||
XCTAssertEqual(components["alpha"] as! String, "0xFF")
|
||||
XCTAssertEqual(components["blue"] as! String, "0xFF")
|
||||
XCTAssertEqual(components["green"] as! String, "0x00")
|
||||
XCTAssertEqual(components["red"] as! String, "0x00")
|
||||
} else {
|
||||
let subColor = color["color"] as! [String: Any]
|
||||
let components = subColor["components"] as! [String: Any]
|
||||
XCTAssertEqual(components["alpha"] as! String, "0xFF")
|
||||
XCTAssertEqual(components["blue"] as! String, "0x00")
|
||||
XCTAssertEqual(components["green"] as! String, "0x00")
|
||||
XCTAssertEqual(components["red"] as! String, "0xFF")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user