1from translate.lang import factory
2
3
4def test_punctranslate():
5    """Tests that we can translate punctuation."""
6    language = factory.getlanguage("fa")
7    assert language.punctranslate("") == ""
8    assert language.punctranslate("abc efg") == "abc efg"
9    assert language.punctranslate("abc efg.") == "abc efg."
10    assert language.punctranslate("Delete file: %s?") == "Delete file: %s؟"
11    assert language.punctranslate('"root" is powerful') == "«root» is powerful"
12    assert language.punctranslate("'root' is powerful") == "«root» is powerful"
13    assert language.punctranslate("`root' is powerful") == "«root» is powerful"
14    assert language.punctranslate('The user "root"') == "The user «root»"
15    assert language.punctranslate("The user 'root'") == "The user «root»"
16    assert language.punctranslate("The user `root'") == "The user «root»"
17    assert language.punctranslate('The user "root"?') == "The user «root»؟"
18    assert language.punctranslate("The user 'root'?") == "The user «root»؟"
19    assert language.punctranslate("The user `root'?") == "The user «root»؟"
20    assert language.punctranslate('Watch the " mark') == 'Watch the " mark'
21    assert language.punctranslate("Watch the ' mark") == "Watch the ' mark"
22    assert language.punctranslate("Watch the ` mark") == "Watch the ` mark"
23    assert language.punctranslate("Watch the “mark”") == "Watch the «mark»"
24    assert (
25        language.punctranslate('The <a href="info">user</a> "root"?')
26        == 'The <a href="info">user</a> «root»؟'
27    )
28    assert (
29        language.punctranslate("The <a href='info'>user</a> 'root'?")
30        == "The <a href='info'>user</a> «root»؟"
31    )
32    # Broken because we test for equal number of ` and ' in the string
33    # assert language.punctranslate("The <a href='info'>user</a> `root'?") == "The <a href='info'>user</a> «root»؟"
34    assert (
35        language.punctranslate("The <a href='http://koeie'>user</a>")
36        == "The <a href='http://koeie'>user</a>"
37    )
38
39    assert language.punctranslate("Copying `%s' to `%s'") == "Copying «%s» to «%s»"
40    # We are very careful by checking that the ` and ' match, so we miss this because of internal punctuation:
41    # assert language.punctranslate("Shlib `%s' didn't contain `%s'") == "Shlib «%s» didn't contain «%s»"
42
43
44def test_sentences():
45    """Tests basic functionality of sentence segmentation."""
46    language = factory.getlanguage("fa")
47    sentences = language.sentences("")
48    assert sentences == []
49
50    sentences = language.sentences("Normal case. Nothing interesting.")
51    assert sentences == ["Normal case.", "Nothing interesting."]
52    sentences = language.sentences("Is that the case ? Sounds interesting !")
53    assert sentences == ["Is that the case ?", "Sounds interesting !"]
54