blob: 15535edd0d4189fe3702f1c292c912674adf1ff8 [file] [log] [blame]
# 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"