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 51 52 53 54 55 56 57 58
|
from __future__ import annotations
import sys
import unittest
from pathlib import Path
from typing import Any
REPO_ROOT = Path(__file__).resolve().parent.parent.parent.parent
sys.path.append(str(REPO_ROOT))
import tools.testing.target_determination.heuristics.utils as utils
from tools.testing.test_run import TestRun
sys.path.remove(str(REPO_ROOT))
class TestHeuristicsUtils(unittest.TestCase):
def assertDictAlmostEqual(
self, first: dict[TestRun, Any], second: dict[TestRun, Any]
) -> None:
self.assertEqual(first.keys(), second.keys())
for key in first.keys():
self.assertAlmostEqual(first[key], second[key])
def test_normalize_ratings(self) -> None:
ratings: dict[TestRun, float] = {
TestRun("test1"): 1,
TestRun("test2"): 2,
TestRun("test3"): 4,
}
normalized = utils.normalize_ratings(ratings, 4)
self.assertDictAlmostEqual(normalized, ratings)
normalized = utils.normalize_ratings(ratings, 0.1)
self.assertDictAlmostEqual(
normalized,
{
TestRun("test1"): 0.025,
TestRun("test2"): 0.05,
TestRun("test3"): 0.1,
},
)
normalized = utils.normalize_ratings(ratings, 0.2, min_value=0.1)
self.assertDictAlmostEqual(
normalized,
{
TestRun("test1"): 0.125,
TestRun("test2"): 0.15,
TestRun("test3"): 0.2,
},
)
if __name__ == "__main__":
unittest.main()
|