Index: translate/storage/test_cpo.py
===================================================================
--- translate/storage/test_cpo.py (revision 7803)
+++ translate/storage/test_cpo.py (working copy)
@@ -72,6 +72,83 @@
unit.addnote("# Double commented comment")
assert unit.getnotes() == "# Double commented comment"
+ def test_previous_source(self):
+ """tests if we handle previous msgid properly"""
+ unit = self.UnitClass("Cat")
+ assert unit.prev_source == ""
+ assert isinstance(unit.prev_source, multistring)
+
+ unit.prev_source = "Feline"
+ assert unit.prev_source == "Feline"
+ assert isinstance(unit.prev_source, multistring)
+
+ unit.prev_source = ["Feline", "Felines"]
+ assert unit.prev_source.strings == ["Feline", "Felines"]
+ assert unit.prev_source == "Feline"
+ assert isinstance(unit.prev_source, multistring)
+
+ unit.prev_source = ""
+ assert unit.prev_source == ""
+ assert unit.source == "Cat"
+ assert len(unit.prev_source.strings) == 1
+ assert isinstance(unit.prev_source, multistring)
+
+ unit.source = ""
+ unit.prev_source = "Feline"
+ assert unit.prev_source == ""
+ unit.source = "Cat"
+
+ unit.markfuzzy()
+ unit.prev_source = "Feline"
+ assert unit.prev_source == ""
+ assert len(unit.prev_source.strings) == 1
+ assert isinstance(unit.prev_source, multistring)
+
+ def test_previous_context(self):
+ """tests if we handle previous context messages properly"""
+ unit = self.UnitClass("Cat")
+ assert unit.prev_context == ""
+
+ context = "A sort of a cute animal"
+ unit.prev_context = context
+ assert unit.prev_context == context
+
+ unit.prev_context = ""
+ assert unit.prev_context == ""
+
+ unit.markfuzzy()
+ unit.prev_context = "A sort of a cute animal"
+ assert unit.prev_context == ""
+
+ def test_set_as_previous(self):
+ """tests if we set previous messages properly"""
+ # This is just a sanity test, for a more complete test look
+ # at convert/test_pot2po.py
+ unit = self.UnitClass(["Test %d", "Tests %d"])
+ unit.target = ["Teste %d", "Testes %d"]
+ unit.set_as_previous()
+ unit.source = "Test %s"
+ test_unit = '''#, fuzzy\n#| msgid "Test %d"\n#| msgid_plural "Tests %d"
+msgid "Test %s"\nmsgstr "Teste %d"\n'''
+ assert str(unit) == test_unit
+ assert unit.isfuzzy()
+
+ # without a target, the unit remain the same
+ unit2 = self.UnitClass(["Other", "Others"])
+ expected = str(unit2)
+ unit2.set_as_previous()
+ assert str(unit2) == expected
+
+ # we can't set a message as previous if the message is marked as fuzzy
+ unit = self.UnitClass("Pizza")
+ unit.msgid_plural = ["Pizzas"]
+ unit.target = ["Pizza", "Pizzas"]
+ unit.markfuzzy()
+ unit.set_as_previous()
+ assert unit.prev_context == ""
+ assert unit.prev_source == ""
+
+
class TestCPOFile(test_po.TestPOFile):
StoreClass = cpo.pofile
def test_msgidcomments(self):