Fix resolution for empty entities

This commit is contained in:
IRBorisov 2023-08-20 14:19:45 +03:00
parent b3fd0d9ff7
commit 3360facd10
3 changed files with 8 additions and 1 deletions

View File

@ -13,7 +13,11 @@ def resolve_entity(ref: EntityReference, context: TermContext) -> str:
alias = ref.entity alias = ref.entity
if alias not in context: if alias not in context:
return f'!Неизвестная сущность: {alias}!' return f'!Неизвестная сущность: {alias}!'
return context[alias].get_form(ref.form) resolved = context[alias].get_form(ref.form)
if resolved == '':
return f'!Отсутствует термин: {alias}!'
else:
return resolved
def resolve_syntactic(ref: SyntacticReference, index: int, allrefs: list['ResolvedReference']) -> str: def resolve_syntactic(ref: SyntacticReference, index: int, allrefs: list['ResolvedReference']) -> str:

View File

@ -25,6 +25,7 @@ class TestReferences(unittest.TestCase):
self.assertIsNone(parse_reference('invalid')) self.assertIsNone(parse_reference('invalid'))
self.assertIsNone(parse_reference(' ')) self.assertIsNone(parse_reference(' '))
self.assertIsNone(parse_reference('@{|}')) self.assertIsNone(parse_reference('@{|}'))
self.assertIsNone(parse_reference('@{|черный}'))
self.assertIsNone(parse_reference('@{ | }')) self.assertIsNone(parse_reference('@{ | }'))
self.assertIsNone(parse_reference('@{-1| }')) self.assertIsNone(parse_reference('@{-1| }'))
self.assertIsNone(parse_reference('@{1| }')) self.assertIsNone(parse_reference('@{1| }'))

View File

@ -13,11 +13,13 @@ class TestResolver(unittest.TestCase):
def setUp(self): def setUp(self):
self.context = cast(TermContext, {}) self.context = cast(TermContext, {})
self.context['X1'] = Entity('X1', 'человек') self.context['X1'] = Entity('X1', 'человек')
self.context['X2'] = Entity('X2', '')
self.resolver = Resolver(self.context) self.resolver = Resolver(self.context)
def test_resolve_entity(self): def test_resolve_entity(self):
self.assertEqual(resolve_entity(EntityReference('X1', ''), self.context), 'человек') self.assertEqual(resolve_entity(EntityReference('X1', ''), self.context), 'человек')
self.assertEqual(resolve_entity(EntityReference('X1', 'plur'), self.context), 'люди') self.assertEqual(resolve_entity(EntityReference('X1', 'plur'), self.context), 'люди')
self.assertEqual(resolve_entity(EntityReference('X2', ''), self.context), '!Отсутствует термин: X2!')
self.assertEqual(resolve_entity(EntityReference('X1', 'invalid'), self.context), '!Неизвестная граммема: invalid!') self.assertEqual(resolve_entity(EntityReference('X1', 'invalid'), self.context), '!Неизвестная граммема: invalid!')
self.assertEqual(resolve_entity(EntityReference('X123', 'plur'), self.context), '!Неизвестная сущность: X123!') self.assertEqual(resolve_entity(EntityReference('X123', 'plur'), self.context), '!Неизвестная сущность: X123!')