-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathtest_variants.py
More file actions
65 lines (53 loc) · 1.98 KB
/
test_variants.py
File metadata and controls
65 lines (53 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from __future__ import absolute_import, unicode_literals
import unittest
from fluent.runtime import FluentBundle
from fluent.runtime.errors import FluentReferenceError
from ..utils import dedent_ftl
class TestVariants(unittest.TestCase):
def setUp(self):
self.ctx = FluentBundle(['en-US'], use_isolating=False)
self.ctx.add_messages(dedent_ftl("""
-variant = {
[a] A
*[b] B
}
-non-variant = Term with no variants
foo = { -variant }
bar = { -variant[a] }
baz = { -variant[b] }
qux = { -variant[c] }
goo = { -missing[a] }
quux = { -non-variant[a] }
"""))
def test_returns_the_default_variant(self):
val, errs = self.ctx.format('foo', {})
self.assertEqual(val, 'B')
self.assertEqual(len(errs), 0)
def test_choose_other_variant(self):
val, errs = self.ctx.format('bar', {})
self.assertEqual(val, 'A')
self.assertEqual(len(errs), 0)
def test_choose_default_variant(self):
val, errs = self.ctx.format('baz', {})
self.assertEqual(val, 'B')
self.assertEqual(len(errs), 0)
def test_choose_missing_variant(self):
val, errs = self.ctx.format('qux', {})
self.assertEqual(val, 'B')
self.assertEqual(len(errs), 1)
self.assertEqual(
errs,
[FluentReferenceError("Unknown variant: c")])
def test_choose_missing_term(self):
val, errs = self.ctx.format('goo', {})
self.assertEqual(val, '-missing')
self.assertEqual(len(errs), 1)
self.assertEqual(
errs,
[FluentReferenceError("Unknown term: -missing")])
def test_variant_with_non_variant_term(self):
val, errs = self.ctx.format('quux', {})
self.assertEqual(val, 'Term with no variants')
self.assertEqual(
errs,
[FluentReferenceError("Unknown variant: a")])