def test_group_mfn_a_bisyllable_proper_noun(self): self.assertEqual([ 'Зора', 'Зоре', 'Зори', 'Зору', 'Зоро', 'Зором', 'Зори', 'Зоре', 'Зора', 'Зорама', 'Зоре', 'Зоре', 'Зорама', 'Зорама' ], mfn_a.inflect('Зора')) self.assertEqual([ 'Кина', 'Кине', 'Кини', 'Кину', 'Кино', 'Кином', 'Кини', 'Кине', 'Кина', 'Кинама', 'Кине', 'Кине', 'Кинама', 'Кинама' ], mfn_a.inflect('Кина')) self.assertEqual([ 'Гана', 'Гане', 'Гани', 'Гану', 'Гано', 'Ганом', 'Гани', 'Гане', 'Гана', 'Ганама', 'Гане', 'Гане', 'Ганама', 'Ганама' ], mfn_a.inflect('Гана'))
def test_group_mfn_a_nepostojano_a(self): self.assertEqual([ 'девојка', 'девојке', 'девојки', 'девојку', 'девојко', 'девојком', 'девојки', 'девојке', 'девојака', 'девојкама', 'девојке', 'девојке', 'девојкама', 'девојкама' ], mfn_a.inflect('девојка')) self.assertEqual([ 'земља', 'земље', 'земљи', 'земљу', 'земљо', 'земљом', 'земљи', 'земље', 'земаља', 'земљама', 'земље', 'земље', 'земљама', 'земљама' ], mfn_a.inflect('земља')) self.assertEqual([ 'овца', 'овце', 'овци', 'овцу', 'овцо', 'овцом', 'овци', 'овце', 'оваца', 'овцама', 'овце', 'овце', 'овцама', 'овцама' ], mfn_a.inflect('овца'))
def test_group_mfn_a_multisyllable_proper_noun_exception(self): self.assertEqual([ 'Италија', 'Италије', 'Италији', 'Италију', 'Италијо', 'Италијом', 'Италији', 'Италије', 'Италија', 'Италијама', 'Италије', 'Италије', 'Италијама', 'Италијама' ], mfn_a.inflect('Италија')) self.assertEqual([ 'Шпанија', 'Шпаније', 'Шпанији', 'Шпанију', 'Шпанијо', 'Шпанијом', 'Шпанији', 'Шпаније', 'Шпанија', 'Шпанијама', 'Шпаније', 'Шпаније', 'Шпанијама', 'Шпанијама' ], mfn_a.inflect('Шпанија')) self.assertEqual([ 'Русија', 'Русије', 'Русији', 'Русију', 'Русијо', 'Русијом', 'Русији', 'Русије', 'Русија', 'Русијама', 'Русије', 'Русије', 'Русијама', 'Русијама' ], mfn_a.inflect('Русија'))
def test_group_mfn_a_multisyllable_proper_noun(self): self.assertEqual([ 'Небојша', 'Небојше', 'Небојши', 'Небојшу', 'Небојша', 'Небојшом', 'Небојши', 'Небојше', 'Небојша', 'Небојшама', 'Небојше', 'Небојше', 'Небојшама', 'Небојшама' ], mfn_a.inflect('Небојша')) self.assertEqual([ 'Француска', 'Француске', 'Француски', 'Француску', 'Француска', 'Француском', 'Француски', 'Француске', 'Францусака', 'Францускама', 'Француске', 'Француске', 'Францускама', 'Францускама' ], mfn_a.inflect('Француска')) self.assertEqual([ 'Немачка', 'Немачке', 'Немачки', 'Немачку', 'Немачка', 'Немачком', 'Немачки', 'Немачке', 'Немачака', 'Немачкама', 'Немачке', 'Немачке', 'Немачкама', 'Немачкама' ], mfn_a.inflect('Немачка')) self.assertEqual([ 'Грчка', 'Грчке', 'Грчки', 'Грчку', 'Грчка', 'Грчком', 'Грчки', 'Грчке', 'Грчака', 'Грчкама', 'Грчке', 'Грчке', 'Грчкама', 'Грчкама' ], mfn_a.inflect('Грчка'))
def inflect_noun(singular, options): """ Takes singular nominative of the noun and additional options. Returns an array with cases in singular followed by plural. """ try: # Try exceptions list first. result = exceptions.return_exception(singular) if result != None: return result # Otherwise try to classify noun type and call appropriate handler. group = classify_noun(singular, options) if group == defs.DeclinationGroup.GROUP_MN_COE: print('MN_COE') elif group == defs.DeclinationGroup.GROUP_N_E_NT: return group_n_e_nt.inflect(singular, options) elif group == defs.DeclinationGroup.GROUP_MFN_A: return group_mfn_a.inflect(singular) else: return group_f_c.inflect(singular) except: # Let caller decide whether to bail or to continue. raise
def test_group_mfn_a_ending_with_tnj_and_more(self): self.assertEqual([ 'претња', 'претње', 'претњи', 'претњу', 'претњо', 'претњом', 'претњи', 'претње', 'претњи', 'претњама', 'претње', 'претње', 'претњама', 'претњама' ], mfn_a.inflect('претња'))
def test_group_mfn_a_ending_with_zd_and_more(self): self.assertEqual([ 'звезда', 'звезде', 'звезди', 'звезду', 'звездо', 'звездом', 'звезди', 'звезде', 'звезда', 'звездама', 'звезде', 'звезде', 'звездама', 'звездама' ], mfn_a.inflect('звезда'))
def test_group_mfn_a_ordinary_m(self): self.assertEqual([ 'судија', 'судије', 'судији', 'судију', 'судијо', 'судијом', 'судији', 'судије', 'судија', 'судијама', 'судије', 'судије', 'судијама', 'судијама' ], mfn_a.inflect('судија'))
def test_group_mfn_a_ending_with_ica(self): self.assertEqual([ 'учитељица', 'учитељице', 'учитељици', 'учитељицу', 'учитељице', 'учитељицом', 'учитељици', 'учитељице', 'учитељица', 'учитељицама', 'учитељице', 'учитељице', 'учитељицама', 'учитељицама' ], mfn_a.inflect('учитељица'))
def test_group_mfn_a_ordinary_f(self): self.assertEqual([ 'жена', 'жене', 'жени', 'жену', 'жено', 'женом', 'жени', 'жене', 'жена', 'женама', 'жене', 'жене', 'женама', 'женама' ], mfn_a.inflect('жена'))