Merge 16e0a3d0902633478f16bc38bf88e582c5b45941 into 1f59e814f90c3f489f48d68262cb1bf640bf6181

This commit is contained in:
Taksh Kothari 2026-08-07 21:00:48 +05:30 committed by GitHub
commit ae397934df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 56 additions and 1 deletions

View File

@ -10,12 +10,22 @@ import SwiftUI
extension Color {
private static var peerColorCache: [String: Color] = [:]
#if DEBUG
/// Counts cache-miss computations; exposed only so regression tests can
/// verify a repeated seed hits the cache instead of recomputing.
static var _peerColorComputeCountForTesting = 0
#endif
init(peerSeed: String, isDark: Bool) {
let cacheKey = peerSeed + (isDark ? "|dark" : "|light")
if let cached = Self.peerColorCache[cacheKey] {
self = cached
return
}
#if DEBUG
Self._peerColorComputeCountForTesting += 1
#endif
let h = peerSeed.djb2()
var hue = Double(h % 1000) / 1000.0
let orange = 30.0 / 360.0

View File

@ -0,0 +1,45 @@
//
// ColorPeerTests.swift
// bitchatTests
//
// Tests for Color(peerSeed:isDark:) caching
//
import Testing
import SwiftUI
@testable import bitchat
struct ColorPeerTests {
@Test func repeatedSeedHitsCacheInsteadOfRecomputing() {
let seed = "cache-hit-\(UUID().uuidString)"
let before = Color._peerColorComputeCountForTesting
let first = Color(peerSeed: seed, isDark: true)
let afterFirst = Color._peerColorComputeCountForTesting
let second = Color(peerSeed: seed, isDark: true)
let afterSecond = Color._peerColorComputeCountForTesting
#expect(afterFirst == before + 1)
#expect(afterSecond == afterFirst)
#expect(first == second)
}
@Test func differentAppearanceForSameSeedIsNotCachedTogether() {
let seed = "appearance-\(UUID().uuidString)"
let before = Color._peerColorComputeCountForTesting
_ = Color(peerSeed: seed, isDark: true)
_ = Color(peerSeed: seed, isDark: false)
let after = Color._peerColorComputeCountForTesting
#expect(after == before + 2)
}
@Test func sameSeedProducesSameColor() {
let seed = "deterministic-\(UUID().uuidString)"
let a = Color(peerSeed: seed, isDark: false)
let b = Color(peerSeed: seed, isDark: false)
#expect(a == b)
}
}