Extract BLE and chat architecture policies (#1324)

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
jack
2026-06-02 09:01:59 +02:00
committed by GitHub
co-authored by jack
parent 193cfdc06a
commit 3eb4f2bd72
46 changed files with 3286 additions and 786 deletions
@@ -0,0 +1,75 @@
import Testing
@testable import bitchat
struct BLEScanDutyPolicyTests {
@Test
func continuousScanWhenDutyIsDisabledInactiveDisconnectedOrTrafficIsRecent() {
#expect(BLEScanDutyPolicy.plan(
dutyEnabled: false,
appIsActive: true,
connectedCount: 4,
hasRecentTraffic: false
) == .continuous)
#expect(BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: false,
connectedCount: 4,
hasRecentTraffic: false
) == .continuous)
#expect(BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: true,
connectedCount: 0,
hasRecentTraffic: false
) == .continuous)
#expect(BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: true,
connectedCount: 4,
hasRecentTraffic: true
) == .continuous)
}
@Test
func continuousScanForSmallMeshes() {
#expect(BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: true,
connectedCount: 2,
hasRecentTraffic: false
) == .continuous)
}
@Test
func dutyCyclesSparseActiveMeshes() {
let plan = BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: true,
connectedCount: 3,
hasRecentTraffic: false
)
#expect(plan == .dutyCycle(
onDuration: TransportConfig.bleDutyOnDuration,
offDuration: TransportConfig.bleDutyOffDuration
))
}
@Test
func dutyCyclesDenseActiveMeshesWithDenseDurations() {
let plan = BLEScanDutyPolicy.plan(
dutyEnabled: true,
appIsActive: true,
connectedCount: TransportConfig.bleHighDegreeThreshold,
hasRecentTraffic: false
)
#expect(plan == .dutyCycle(
onDuration: TransportConfig.bleDutyOnDurationDense,
offDuration: TransportConfig.bleDutyOffDurationDense
))
}
}