Initial Implementation of Enum

This commit is contained in:
2025-06-22 11:18:42 -03:00
parent 4ba5d83df6
commit 7e591f0525
3 changed files with 117 additions and 3 deletions

View File

@@ -0,0 +1,80 @@
from jambo.parser import EnumTypeParser
from enum import Enum
from unittest import TestCase
class TestEnumTypeParser(TestCase):
def test_enum_type_parser_throws_enum_not_defined(self):
parser = EnumTypeParser()
schema = {}
with self.assertRaises(ValueError):
parsed_type, parsed_properties = parser.from_properties_impl(
"TestEnum",
schema,
)
def test_enum_type_parser_throws_enum_not_list(self):
parser = EnumTypeParser()
schema = {
"enum": "not_a_list",
}
with self.assertRaises(ValueError):
parsed_type, parsed_properties = parser.from_properties_impl(
"TestEnum",
schema,
)
def test_enum_type_parser_creates_enum(self):
parser = EnumTypeParser()
schema = {
"enum": ["value1", "value2", "value3"],
}
parsed_type, parsed_properties = parser.from_properties_impl(
"TestEnum",
schema,
)
self.assertIsInstance(parsed_type, type)
self.assertTrue(issubclass(parsed_type, Enum))
self.assertEqual(
set(parsed_type.__members__.keys()), {"VALUE1", "VALUE2", "VALUE3"}
)
self.assertEqual(parsed_properties, {"default": None})
def test_enum_type_parser_creates_enum_with_default(self):
parser = EnumTypeParser()
schema = {
"enum": ["value1", "value2", "value3"],
"default": "value2",
}
parsed_type, parsed_properties = parser.from_properties_impl(
"TestEnum",
schema,
)
self.assertIsInstance(parsed_type, type)
self.assertTrue(issubclass(parsed_type, Enum))
self.assertEqual(
set(parsed_type.__members__.keys()), {"VALUE1", "VALUE2", "VALUE3"}
)
self.assertEqual(parsed_properties["default"], "value2")
def test_enum_type_parser_throws_invalid_default(self):
parser = EnumTypeParser()
schema = {
"enum": ["value1", "value2", "value3"],
"default": "invalid_value",
}
with self.assertRaises(ValueError):
parser.from_properties_impl("TestEnum", schema)