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