File size: 1,811 Bytes
35205e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from __future__ import annotations

import unittest

from chatmock.fast_mode import parse_optional_bool, resolve_service_tier, supports_priority_service_tier


class FastModeTests(unittest.TestCase):
    def test_parse_optional_bool(self) -> None:
        self.assertTrue(parse_optional_bool(True))
        self.assertTrue(parse_optional_bool("true"))
        self.assertFalse(parse_optional_bool(False))
        self.assertFalse(parse_optional_bool("off"))
        self.assertIsNone(parse_optional_bool("maybe"))

    def test_priority_allowlist_uses_normalized_model_ids(self) -> None:
        self.assertTrue(supports_priority_service_tier("gpt5.4"))
        self.assertFalse(supports_priority_service_tier("gpt-5.3-codex"))

    def test_explicit_fast_mode_true_errors_for_unsupported_model(self) -> None:
        resolution = resolve_service_tier(
            "gpt-5.3-codex",
            request_fast_mode=True,
            server_fast_mode=False,
        )
        self.assertIsNone(resolution.service_tier)
        self.assertIsNotNone(resolution.error_message)

    def test_server_default_fast_mode_falls_back_on_unsupported_model(self) -> None:
        resolution = resolve_service_tier(
            "gpt-5.3-codex",
            server_fast_mode=True,
        )
        self.assertIsNone(resolution.service_tier)
        self.assertIsNone(resolution.error_message)
        self.assertIsNotNone(resolution.warning_message)

    def test_request_fast_mode_false_overrides_server_default(self) -> None:
        resolution = resolve_service_tier(
            "gpt-5.4",
            request_fast_mode=False,
            server_fast_mode=True,
        )
        self.assertIsNone(resolution.service_tier)
        self.assertIsNone(resolution.error_message)


if __name__ == "__main__":
    unittest.main()