• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 measures.py."""
7
8import measures
9import unittest
10from measure import Measure
11from test_script_metrics_pb2 import TestScriptMetric
12
13
14class MeasuresTest(unittest.TestCase):
15  """Test measure.py."""
16
17  def test_create_average(self) -> None:
18    ave = measures.average('a', 'b', 'c')
19    ave.record(1)
20    ave.record(2)
21    exp = TestScriptMetric()
22    exp.name = 'a/b/c'
23    exp.value = 1.5
24    self.assertEqual(ave.dump(), exp)
25
26  def test_create_single_name_piece(self) -> None:
27    self.assertEqual(measures.average('a')._name, 'a')
28
29  def test_create_no_name_piece(self) -> None:
30    self.assertRaises(ValueError, lambda: measures.average())
31
32  def test_create_none_in_name_pieces(self) -> None:
33    self.assertRaises(TypeError, lambda: measures.average('a', None))
34
35  def test_create_count(self) -> None:
36    self.assertIsInstance(measures.count('a'), Measure)
37
38  def test_create_data_points(self) -> None:
39    self.assertIsInstance(measures.data_points('a'), Measure)
40
41  def test_register(self) -> None:
42    before = len(measures._metric._metrics)
43    for x in range(3):
44      measures.average('a')
45    self.assertEqual(len(measures._metric._metrics), before + 3)
46
47
48if __name__ == '__main__':
49  unittest.main()
50