#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Tests for codegen.py. """ # TODO(crbug.com/1148168): Set up these tests to run on the tryjobs. import unittest from codegen import Util class CodegenTest(unittest.TestCase): """Tests for codegen.py""" def test_sanitize_name(self): self.assertEqual(Util.sanitize_name('My Metric.Or::Event/Or/Project_name'), 'My_Metric_Or__Event_Or_Project_name') def test_camel_to_snake(self): def check(camel, expected_snake): self.assertEqual(Util.camel_to_snake(camel), expected_snake) check('already_snake_case', 'already_snake_case') check('ConvertFromCamelCase', 'convert_from_camel_case') check('HTTPAcronymAtStart', 'http_acronym_at_start') check('AcronymInHTTPMiddle', 'acronym_in_http_middle') check('AcronymAtEndHTTP', 'acronym_at_end_http') def test_hash_name(self): # This was generated using the function in Chromium's # //base/metrics/metrics_hashes.cc. known_good_hash = 11096769389970233700 self.assertEqual(Util.hash_name('known good hash'), known_good_hash) def test_event_name_hash(self): # This was generated using the function in Chromium's # //base/metrics/metrics_hashes.cc for the string # chrome::TestProjectOne::TestEventOne event_name_hash = 13593049295042080097 project_name = 'TestProjectOne' event_name = 'TestEventOne' self.assertEqual(Util.event_name_hash(project_name, event_name), event_name_hash) if __name__ == '__main__': unittest.main()