aboutsummaryrefslogtreecommitdiff
path: root/Tests
diff options
context:
space:
mode:
authorTommaso Negri <me@tommasongr.com>2026-10-14 22:21:05 +0200
committerTommaso Negri <me@tommasongr.com>2026-10-14 22:21:05 +0200
commit4942df3a59c0dd7c95b82727f8b03ddf80657973 (patch)
tree0d1395de2bce8257e251ed78ab921ec3da7762f8 /Tests
parentec076ee6e315e6059545d0364a329cdb4b80b306 (diff)
downloadbar-4942df3a59c0dd7c95b82727f8b03ddf80657973.tar.gz
bar-4942df3a59c0dd7c95b82727f8b03ddf80657973.zip
improve hex color conversion
Diffstat (limited to 'Tests')
-rw-r--r--Tests/barTests/ColorHexTests.swift39
1 files changed, 39 insertions, 0 deletions
diff --git a/Tests/barTests/ColorHexTests.swift b/Tests/barTests/ColorHexTests.swift
new file mode 100644
index 0000000..14f60c0
--- /dev/null
+++ b/Tests/barTests/ColorHexTests.swift
@@ -0,0 +1,39 @@
+import SwiftUI
+import Testing
+@testable import bar
+
+private func expectColor(_ color: Color, _ red: Double, _ green: Double, _ blue: Double, _ alpha: Double = 1) {
+ let actual = color.resolve(in: EnvironmentValues())
+ let expected = Color(.sRGB, red: red, green: green, blue: blue, opacity: alpha)
+ .resolve(in: EnvironmentValues())
+ #expect(abs(actual.red - expected.red) < 0.00001)
+ #expect(abs(actual.green - expected.green) < 0.00001)
+ #expect(abs(actual.blue - expected.blue) < 0.00001)
+ #expect(abs(actual.opacity - expected.opacity) < 0.00001)
+}
+
+@Test func validHexColors() {
+ expectColor(.hex("#3aF"), 0x33 / 255.0, 0xAA / 255.0, 1)
+ expectColor(.hex("3Af8"), 0x33 / 255.0, 0xAA / 255.0, 1, 0x88 / 255.0)
+ expectColor(.hex("33aaff"), 0x33 / 255.0, 0xAA / 255.0, 1)
+ expectColor(.hex(" \n#33AAff80\t"), 0x33 / 255.0, 0xAA / 255.0, 1, 0x80 / 255.0)
+ expectColor(.hex("#0000"), 0, 0, 0, 0)
+ expectColor(.hex("#ffffff00"), 1, 1, 1, 0)
+ expectColor(.hex("#FFFFFFFF"), 1, 1, 1)
+}
+
+@Test(arguments: [
+ "", " \n\t", "#", "12", "12345", "1234567", "123456789",
+ "g12", "1g2", "12g", "g123", "1g23", "123g",
+ "g12345", "12g345", "12345g", "g1234567", "123g4567", "1234567g",
+ "+123", "-123", "0xFF", "# 123", "12 3", "##123", "123", "abc💙",
+]) func malformedHexIsOpaqueBlack(_ input: String) {
+ expectColor(.hex(input), 0, 0, 0)
+}
+
+@Test @MainActor func configuredColorsKeepTheirAppearance() {
+ expectColor(Config.foreground, 0xAE / 255.0, 0xD3 / 255.0, 0xF3 / 255.0)
+ expectColor(Config.background, 0x01 / 255.0, 0x04 / 255.0, 0x08 / 255.0, 0.825)
+ expectColor(Config.highlights[0], 0x0F / 255.0, 0x30 / 255.0, 0x4A / 255.0)
+ expectColor(Config.highlights[1], 0x1F / 255.0, 0x68 / 255.0, 0x9D / 255.0)
+}