Coverage for mlos_bench/mlos_bench/tests/tunables/test_tunable_categoricals.py: 100%
17 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 00:44 +0000
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-20 00:44 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""Unit tests for deep copy of tunable objects and groups."""
7from mlos_bench.tunables.tunable_groups import TunableGroups
10def test_tunable_categorical_types() -> None:
11 """Check if we accept tunable categoricals as ints as well as strings and convert
12 both to strings.
13 """
14 tunable_params = {
15 "test-group": {
16 "cost": 1,
17 "params": {
18 "int-cat": {
19 "type": "categorical",
20 "values": [1, 2, 3],
21 "default": 1,
22 },
23 "bool-cat": {
24 "type": "categorical",
25 "values": [True, False],
26 "default": True,
27 },
28 "false-bool-cat": {
29 "type": "categorical",
30 "values": [True, False],
31 "default": False,
32 },
33 "str-cat": {
34 "type": "categorical",
35 "values": ["a", "b", "c"],
36 "default": "a",
37 },
38 },
39 }
40 }
41 tunable_groups = TunableGroups(tunable_params)
42 tunable_groups.reset()
44 int_cat, _ = tunable_groups.get_tunable("int-cat")
45 assert isinstance(int_cat.value, str)
46 assert int_cat.value == "1"
48 bool_cat, _ = tunable_groups.get_tunable("bool-cat")
49 assert isinstance(bool_cat.value, str)
50 assert bool_cat.value == "True"
52 false_bool_cat, _ = tunable_groups.get_tunable("false-bool-cat")
53 assert isinstance(false_bool_cat.value, str)
54 assert false_bool_cat.value == "False"
56 str_cat, _ = tunable_groups.get_tunable("str-cat")
57 assert isinstance(str_cat.value, str)
58 assert str_cat.value == "a"