from korbyte.benchmark import _flatten_strings from korbyte.report import _aggregate def test_aggregate_uses_weighted_counts() -> None: metrics = { "one": { "tokens": 10, "characters": 30, "utf8_bytes": 50, "whitespace_units": 5, "elapsed_s_median": 1.0, }, "two": { "tokens": 20, "characters": 60, "utf8_bytes": 100, "whitespace_units": 10, "elapsed_s_median": 2.0, }, } aggregate = _aggregate(metrics) assert aggregate["tokens"] == 30 assert aggregate["characters_per_token"] == 3.0 assert aggregate["bytes_per_token"] == 5.0 assert aggregate["fertility"] == 2.0 def test_dialogue_extraction_uses_turn_text_only() -> None: dialogue = [ {"role": "user", "text": "안녕하세요.", "state": ["상태"]}, {"role": "sys", "text": "무엇을 도와드릴까요?", "state": []}, ] assert list(_flatten_strings(dialogue)) == ["안녕하세요.", "무엇을 도와드릴까요?"]