class PropertyFileExportTest(unittest.TestCase):
    """Test XPI `XpiPropertiesSubExporter`."""

    def setUp(self):
        self.exporter = XpiPropertiesSubExporter()

    def test_properties_export(self):
        # Test plain export of an XPI properties file.
        file = MockFile(messages=[
            MockMessage('foo', 'bar'),
            MockMessage('id', 'translation', comment='comment'),
            ])

        expected = dedent("""
            foo=bar

            /* comment */
            id=translation
            """).strip()
        self.assertEqual(self.exporter.export(file), expected)

    def test_escape(self):
        # Test escaping in properties files.
        file = MockFile(messages=[
            MockMessage("f'oo", 'b"ar', comment="Escaped quotes"),
            MockMessage("f\\oo", "b\\ar", comment="Escaped backslashes"),
            ])

        expected = dedent("""
            /* Escaped quotes */
            f\\'oo=b\\"ar

            /* Escaped backslashes */
            f\\\\oo=b\\\\ar
            """).strip()
    
        self.assertEqual(self.exporter.export(file).strip(), expected)

    def test_escape_comment(self):
        # Test escaping of comments in properties files.  Not fancy like
        # actual translation content escaping; just making sure an
        # ill-chosen comment does not produce wildly invalid output.
        file = MockFile(messages=[
            MockMessage("foo", "bar", comment="/*//*/**/ */")])

        expected = dedent("""
            /* /*X//*X/**X/ *X/ */
            foo=bar
            """).strip()

        self.assertEqual(self.exporter.export(file).strip(), expected)
 def setUp(self):
     self.exporter = XpiPropertiesSubExporter()