| # Copyright 2023 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import unittest |
| |
| from fidl._fidl_common import FidlMeta, camel_case_to_snake_case |
| |
| |
| class NoAdditionalRequired(metaclass=FidlMeta): |
| ... |
| |
| |
| class OneAdditionalRequired( |
| metaclass=FidlMeta, required_class_variables=[("foo", int)] |
| ): |
| ... |
| |
| |
| class FidlCommon(unittest.TestCase): |
| """Tests for FIDL common utils""" |
| |
| def test_camel_case_to_snake_case_standard(self) -> None: |
| expected = "test_string" |
| got = camel_case_to_snake_case("TestString") |
| self.assertEqual(expected, got) |
| |
| def test_camel_case_to_snake_case_empty_string(self) -> None: |
| expected = "" |
| got = camel_case_to_snake_case("") |
| self.assertEqual(expected, got) |
| |
| def test_camel_case_to_snake_case_all_caps(self) -> None: |
| expected = "f_f_f_f" |
| got = camel_case_to_snake_case("FFFF") |
| self.assertEqual(expected, got) |
| |
| def test_fidl_meta_implicit_required_fields_missing(self) -> None: |
| with self.assertRaises(NotImplementedError): |
| |
| class Test(NoAdditionalRequired): |
| ... |
| |
| def test_fidl_meta_implicit_required_fields_present(self) -> None: |
| class Test(NoAdditionalRequired): |
| __fidl_kind__ = "foo" |
| |
| def test_fidl_meta_explicit_required_fields_missing(self) -> None: |
| with self.assertRaises(NotImplementedError): |
| |
| class Test(OneAdditionalRequired): |
| __fidl_kind__ = "foo" |
| |
| def test_fidl_meta_explicit_required_fields_present(self) -> None: |
| class Test(OneAdditionalRequired): |
| __fidl_kind__ = "foo" |
| foo: int = 1 |
| |
| def test_fidl_meta_explicit_required_fields_present_but_wrong_type( |
| self, |
| ) -> None: |
| with self.assertRaises(NotImplementedError): |
| |
| class Test(OneAdditionalRequired): |
| __fidl_kind__ = "foo" |
| foo: str = "foo" |