#!/usr/bin/env python # -*- coding: utf-8 -*- from translate.tools import pocount from translate.storage import po from translate.misc import wStringIO class TestPOCount: def count(self, source, expectedsource, target=None, expectedtarget=None): """simple helper to check the respective word counts""" poelement = po.pounit(source) if target is not None: poelement.settarget(target) wordssource, wordstarget = pocount.wordsinpoel(poelement) print 'Source (expected=%d; actual=%d): "%s"' % (expectedsource, wordssource, source) assert wordssource == expectedsource if target is not None: print 'Target (expected=%d; actual=%d): "%s"' % (expectedtarget, wordstarget, target) assert wordstarget == expectedtarget def test_simple_count_zero(self): """no content""" self.count("", 0) def test_simple_count_one(self): """simplest one word count""" self.count("One", 1) def test_simple_count_two(self): """simplest one word count""" self.count("One two", 2) def test_punctuation_divides_words(self): """test that we break words when there is punctuation""" self.count("One. Two", 2) self.count("One.Two", 2) def test_xml_tags(self): """test that we do not count XML tags as words""" #
is a word break self.count("A word
Another word", 4) self.count("A word
Another word", 4) self.count("A word
Another word", 4) # \n is a word break self.count("

A word

\n

Another word

", 4) def test_newlines(self): """test to see that newlines divide words""" # newlines break words self.count("A word.\nAnother word", 4) self.count(r"A word.\\n\nAnother word", 4) def test_variables_are_words(self): """test that we count variables as words""" self.count("%PROGRAMNAME %PROGRAM% %s $file $1", 5) def test_plurals(self): """test that we can handle plural PO elements""" # #: gdk-pixbuf/gdk-pixdata.c:430 # #, c-format # msgid "failed to allocate image buffer of %u byte" # msgid_plural "failed to allocate image buffer of %u bytes" # msgstr[0] "e paletšwe go hwetša sešireletši sa seswantšho sa paete ya %u" # msgstr[1] "e paletšwe go hwetša sešireletši sa seswantšho sa dipaete tša %u" def test_plurals_kde(self): """test that we correcly count old style KDE plurals""" self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) def test_msgid_blank(self): """counts a message id""" self.count(" ", 0) # Counting strings # We need to check how we count strings also and if we call it translated or untranslated # ie an all spaces msgid should be translated if there are spaces in the msgstr # Make sure we don't count obsolete messages # Do we correctly identify a translated yet blank message? # Need to test that we can differentiate between fuzzy, translated and untranslated