|
6 | 6 |
|
7 | 7 | from tests.syntax import dedent_ftl
|
8 | 8 | from fluent.syntax import FluentParser, FluentSerializer
|
| 9 | +from fluent.syntax.serializer import serialize_expression, serialize_variant_key |
9 | 10 |
|
10 | 11 |
|
11 | 12 | class TestSerializeResource(unittest.TestCase):
|
@@ -434,19 +435,16 @@ class TestSerializeExpression(unittest.TestCase):
|
434 | 435 | @staticmethod
|
435 | 436 | def pretty_expr(text):
|
436 | 437 | parser = FluentParser()
|
437 |
| - serializer = FluentSerializer(with_junk=False) |
438 | 438 | entry = parser.parse_entry(dedent_ftl(text))
|
439 | 439 | expr = entry.value.elements[0].expression
|
440 |
| - return serializer.serialize_expression(expr) |
| 440 | + return serialize_expression(expr) |
441 | 441 |
|
442 | 442 | def test_invalid_expression(self):
|
443 |
| - serializer = FluentSerializer() |
444 |
| - |
445 | 443 | with self.assertRaisesRegexp(Exception, 'Unknown expression type'):
|
446 |
| - serializer.serialize_expression(None) |
| 444 | + serialize_expression(None) |
447 | 445 |
|
448 | 446 | with self.assertRaisesRegexp(Exception, 'Unknown expression type'):
|
449 |
| - serializer.serialize_expression(object()) |
| 447 | + serialize_expression(object()) |
450 | 448 |
|
451 | 449 | def test_string_expression(self):
|
452 | 450 | input = """\
|
@@ -498,3 +496,43 @@ def test_select_expression(self):
|
498 | 496 | }
|
499 | 497 | """
|
500 | 498 | self.assertEqual(self.pretty_expr(input), '$num ->\n *[one] One\n')
|
| 499 | + |
| 500 | + |
| 501 | +class TestSerializeVariantKey(unittest.TestCase): |
| 502 | + @staticmethod |
| 503 | + def pretty_variant_key(text, index): |
| 504 | + parser = FluentParser() |
| 505 | + entry = parser.parse_entry(dedent_ftl(text)) |
| 506 | + variants = entry.value.elements[0].expression.variants |
| 507 | + return serialize_variant_key(variants[index].key) |
| 508 | + |
| 509 | + def test_invalid_expression(self): |
| 510 | + with self.assertRaisesRegexp(Exception, 'Unknown variant key type'): |
| 511 | + serialize_variant_key(None) |
| 512 | + |
| 513 | + with self.assertRaisesRegexp(Exception, 'Unknown variant key type'): |
| 514 | + serialize_variant_key(object()) |
| 515 | + |
| 516 | + def test_identifiers(self): |
| 517 | + input = """\ |
| 518 | + foo = { $num -> |
| 519 | + [one] One |
| 520 | + *[other] Other |
| 521 | + } |
| 522 | + """ |
| 523 | + self.assertEqual(self.pretty_variant_key(input, 0), 'one') |
| 524 | + self.assertEqual(self.pretty_variant_key(input, 1), 'other') |
| 525 | + |
| 526 | + def test_number_literals(self): |
| 527 | + input = """\ |
| 528 | + foo = { $num -> |
| 529 | + [-123456789] Minus a lot |
| 530 | + [0] Zero |
| 531 | + *[3.14] Pi |
| 532 | + [007] James |
| 533 | + } |
| 534 | + """ |
| 535 | + self.assertEqual(self.pretty_variant_key(input, 0), '-123456789') |
| 536 | + self.assertEqual(self.pretty_variant_key(input, 1), '0') |
| 537 | + self.assertEqual(self.pretty_variant_key(input, 2), '3.14') |
| 538 | + self.assertEqual(self.pretty_variant_key(input, 3), '007') |
0 commit comments