Publish v1.0
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

Reviewed-on: #1
This commit is contained in:
2022-10-17 11:24:27 +02:00
parent a99466f258
commit 6203700b0c
87 changed files with 3112 additions and 1223 deletions

View File

@ -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())
}
}

View 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")
}
}

View 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")
}
}
}
}