xref: /aosp_15_r20/external/angle/build/util/lib/proto/metric_unittests.py (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1#!/usr/bin/env vpython3
2
3# Copyright 2024 The Chromium Authors
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6"""File for testing metric.py."""
7
8import unittest
9from average import Average
10from count import Count
11from metric import Metric
12
13
14class MetricTest(unittest.TestCase):
15  """Test metric.py."""
16
17  def test_no_metric(self) -> None:
18    m = Metric()
19    self.assertFalse(m.dump().metrics)
20
21  def test_multiple_metrics(self) -> None:
22    m = Metric()
23    m.register(Average("a"))
24    m.register(Average("b"))
25    m.register(Count("c"))
26    self.assertEqual(len(m.dump().metrics), 3)
27    self.assertEqual(set([i.name for i in m.dump().metrics]),
28                     set(["a", "b", "c"]))
29
30  def test_tags(self) -> None:
31    m = Metric()
32    m.register(Count("c"))
33    m.tag("t1", "t2")
34    m.tag("t3")
35    self.assertEqual(len(m.dump().metrics), 4)
36    self.assertEqual(set([i.name for i in m.dump().metrics]),
37                     set(["c", "c@t1", "c@t2", "c@t3"]))
38
39
40
41if __name__ == '__main__':
42  unittest.main()
43