#!/usr/bin/env vpython3

# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""File for testing metric.py."""

import unittest
from average import Average
from count import Count
from metric import Metric


class MetricTest(unittest.TestCase):
    """Test metric.py."""

    def test_no_metric(self) -> None:
        m = Metric()
        self.assertFalse(m.dump().metrics)

    def test_multiple_metrics(self) -> None:
        m = Metric()
        m.register(Average("a"))
        m.register(Average("b"))
        m.register(Count("c"))
        self.assertEqual(len(m.dump().metrics), 3)
        self.assertEqual(
            set([i.name for i in m.dump().metrics]), set(["a", "b", "c"])
        )

    def test_tags(self) -> None:
        m = Metric()
        m.register(Count("c"))
        m.tag("t1", "t2")
        m.tag("t3")
        self.assertEqual(len(m.dump().metrics), 1)
        self.assertEqual(m.dump().metrics[0].tag, "|t1|t2|t3|")


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