HealthProbe / HealthProbeTests / LocalMetricTimeoutProfileTests.swift
Newer Older
39 lines | 1.462kb
Bogdan Timofte authored 2 weeks ago
1
import XCTest
2
@testable import HealthProbe
3

            
4
final class LocalMetricTimeoutProfileTests: XCTestCase {
5
    override func tearDown() {
6
        LocalMetricTimeoutProfileStore.removeAll()
7
        super.tearDown()
8
    }
9

            
10
    func testRecordsSuccessAndPersistsProfile() {
11
        var profile = LocalMetricTimeoutProfile(metricIdentifier: "step_count", displayName: "Step Count")
12

            
13
        profile.recordSuccess(elapsed: 12, displayName: "Step Count")
14
        LocalMetricTimeoutProfileStore.save(profile)
15

            
16
        let loaded = LocalMetricTimeoutProfileStore.profile(for: MonitoredType(
17
            id: "step_count",
18
            displayName: "Step Count",
19
            category: .activity,
20
            isEnabledByDefault: true,
21
            objectType: nil
22
        ))
23
        XCTAssertEqual(loaded.successCount, 1)
24
        XCTAssertEqual(loaded.lastSuccessfulElapsed, 12)
25
        XCTAssertEqual(loaded.timeoutMode, "adaptive")
26
    }
27

            
28
    func testManualTimeoutIsClampedAndResettable() {
29
        var profile = LocalMetricTimeoutProfile(metricIdentifier: "heart_rate", displayName: "Heart Rate")
30

            
31
        profile.setManualTimeout(1_000)
32
        XCTAssertEqual(profile.effectiveTimeout, LocalMetricTimeoutProfile.maximumTimeout)
33
        XCTAssertEqual(profile.timeoutMode, "manual")
34

            
35
        profile.resetLearning()
36
        XCTAssertEqual(profile.effectiveTimeout, LocalMetricTimeoutProfile.defaultInitialTimeout)
37
        XCTAssertEqual(profile.timeoutMode, "default")
38
    }
39
}