def test_percent_fraction(self): text = '1/2 %' ants = list(get_percent_annotations(text)) self.assertEqual(1, len(ants)) self.assertEqual(Decimal('0.005'), ants[0].fraction) text = '2 ⅗ percent' ants = list(get_percent_annotations(text)) self.assertEqual(1, len(ants)) self.assertEqual(Decimal('0.026'), ants[0].fraction)
def parse(self, log: ProcessLogger, text, text_unit_id, _text_unit_lang, **kwargs) -> ParseResults: found = list(percents.get_percent_annotations(text, float_digits=DEFAULT_FLOAT_PRECIZION)) if found: unique = set(found) return ParseResults({PercentUsage: [PercentUsage(text_unit_id=text_unit_id, amount=item.amount, amount_str=item.text, unit_type=item.sign, total=item.fraction, count=found.count(item)) for item in unique]})
def test_percent(self): text = "I'm 146.5 percent sure (or just 100%)" ds = list(get_percents(text)) self.assertEqual(2, len(ds)) ants = list(get_percent_annotations(text)) self.assertEqual(2, len(ants)) self.assertEqual('en', ants[0].locale) self.assertEqual('percent', ants[0].sign) self.assertEqual(146.5, ants[0].amount) self.assertEqual('%', ants[1].sign) self.assertEqual(100.0, ants[1].amount)
def test_percent_mix_fraction(self): text = '020 ⅗%' ants = list(get_percent_annotations(text)) self.assertEqual(1, len(ants)) self.assertEqual(Decimal('0.206'), ants[0].fraction)
def test_percent_amount(self): text = "30% or more plus" ants = list(get_percent_annotations(text)) self.assertEqual(1, len(ants)) self.assertEqual(30, ants[0].amount) self.assertEqual(Decimal('0.3'), ants[0].fraction)