1from translate.lang import factory
2
3
4def test_punctranslate():
5    """Tests that we can translate punctuation."""
6    language = factory.getlanguage("fr")
7    assert language.punctranslate("") == ""
8    assert language.punctranslate("abc efg") == "abc efg"
9    assert language.punctranslate("abc efg.") == "abc efg."
10    assert language.punctranslate("abc efg!") == "abc efg\u00a0!"
11    assert language.punctranslate("abc efg? hij!") == "abc efg\u00a0? hij\u00a0!"
12    assert language.punctranslate("Delete file: %s?") == "Delete file\u00a0: %s\u00a0?"
13    assert (
14        language.punctranslate('"root" is powerful') == "«\u00a0root\u00a0» is powerful"
15    )
16    assert (
17        language.punctranslate("'root' is powerful") == "«\u00a0root\u00a0» is powerful"
18    )
19    assert (
20        language.punctranslate("`root' is powerful") == "«\u00a0root\u00a0» is powerful"
21    )
22    assert language.punctranslate('The user "root"') == "The user «\u00a0root\u00a0»"
23    assert language.punctranslate("The user 'root'") == "The user «\u00a0root\u00a0»"
24    assert language.punctranslate("The user `root'") == "The user «\u00a0root\u00a0»"
25    assert (
26        language.punctranslate('The user "root"?')
27        == "The user «\u00a0root\u00a0»\u00a0?"
28    )
29    assert (
30        language.punctranslate("The user 'root'?")
31        == "The user «\u00a0root\u00a0»\u00a0?"
32    )
33    assert (
34        language.punctranslate("The user `root'?")
35        == "The user «\u00a0root\u00a0»\u00a0?"
36    )
37    assert language.punctranslate('Watch the " mark') == 'Watch the " mark'
38    assert language.punctranslate("Watch the ' mark") == "Watch the ' mark"
39    assert language.punctranslate("Watch the ` mark") == "Watch the ` mark"
40    assert language.punctranslate("Watch the “mark”") == "Watch the «\u00a0mark\u00a0»"
41    assert (
42        language.punctranslate('The <a href="info">user</a> "root"?')
43        == 'The <a href="info">user</a> «\u00a0root\u00a0»\u00a0?'
44    )
45    assert (
46        language.punctranslate("The <a href='info'>user</a> 'root'?")
47        == "The <a href='info'>user</a> «\u00a0root\u00a0»\u00a0?"
48    )
49    # Broken because we test for equal number of ` and ' in the string
50    # assert language.punctranslate("The <a href='info'>user</a> `root'?") == "The <a href='info'>user</a> «\u00a0root\u00a0»\u00a0?"
51    assert (
52        language.punctranslate("The <a href='http://koeie'>user</a>")
53        == "The <a href='http://koeie'>user</a>"
54    )
55
56    assert (
57        language.punctranslate("Copying `%s' to `%s'")
58        == "Copying «\u00a0%s\u00a0» to «\u00a0%s\u00a0»"
59    )
60
61
62def test_sentences():
63    """Tests basic functionality of sentence segmentation."""
64    language = factory.getlanguage("fr")
65    sentences = language.sentences("")
66    assert sentences == []
67
68    sentences = language.sentences("Normal case. Nothing interesting.")
69    assert sentences == ["Normal case.", "Nothing interesting."]
70    sentences = language.sentences("Is that the case ? Sounds interesting !")
71    assert sentences == ["Is that the case ?", "Sounds interesting !"]
72