Files
MatchLiveTv/native/ios/MatchLiveTvTests/ThermalAdaptationTests.swift
Emiliano FrascaroandCursor ea5da1eb86 Allinea iOS a i18n Android 2.0.5 e aggiunge monitoraggio termico nativo.
Completa L10n su login/hub/wizard/broadcast e introduce ThermalStateManager su iOS/Android con degradazione qualità e indicatore in overlay.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 11:19:37 +02:00

50 lines
1.8 KiB
Swift

import XCTest
@testable import MatchLiveTv
@MainActor
final class ThermalAdaptationTests: XCTestCase {
func testSeriousReducesBitrateAndFps() {
let baseline = BroadcastConfig(
rtmpUrl: "rtmp://localhost/live/key",
videoBitrate: 2_500_000,
fps: 30
)
let adapted = ThermalStateManager.adaptedConfig(from: baseline, for: .serious)
XCTAssertEqual(adapted.videoBitrate, 1_875_000)
XCTAssertEqual(adapted.fps, 24)
}
func testCriticalReducesFurther() {
let baseline = BroadcastConfig(
rtmpUrl: "rtmp://localhost/live/key",
videoBitrate: 2_500_000,
fps: 30
)
let adapted = ThermalStateManager.adaptedConfig(from: baseline, for: .critical)
XCTAssertEqual(adapted.videoBitrate, 1_250_000)
XCTAssertEqual(adapted.fps, 20)
}
func testNominalKeepsBaseline() {
let baseline = BroadcastConfig(
rtmpUrl: "rtmp://localhost/live/key",
videoBitrate: 2_500_000,
fps: 30
)
let adapted = ThermalStateManager.adaptedConfig(from: baseline, for: .nominal)
XCTAssertEqual(adapted.videoBitrate, baseline.videoBitrate)
XCTAssertEqual(adapted.fps, baseline.fps)
}
func testThermalStateLabels() {
AppLanguage.current = .it
XCTAssertEqual(ThermalState.nominal.displayLabel, L10n.t("thermal.state.nominal"))
XCTAssertEqual(ThermalState.fair.displayLabel, L10n.t("thermal.state.fair"))
XCTAssertEqual(ThermalState.serious.displayLabel, L10n.t("thermal.state.serious"))
XCTAssertEqual(ThermalState.critical.displayLabel, L10n.t("thermal.state.critical"))
AppLanguage.current = .en
XCTAssertEqual(ThermalState.nominal.displayLabel, "Temperature OK")
AppLanguage.current = .system
}
}