#!/usr/bin/env python3
# Copyright (c) 2011 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
""" Unit tests for the easy_xml.py file. """
import gyp.easy_xml as easy_xml
import unittest
from io import StringIO
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.stderr = StringIO()
def test_EasyXml_simple(self):
self.assertEqual(
easy_xml.XmlToString(["test"]),
'',
)
self.assertEqual(
easy_xml.XmlToString(["test"], encoding="Windows-1252"),
'',
)
def test_EasyXml_simple_with_attributes(self):
self.assertEqual(
easy_xml.XmlToString(["test2", {"a": "value1", "b": "value2"}]),
'',
)
def test_EasyXml_escaping(self):
original = "'\"\r&\nfoo"
converted = "<test>'"
&
foo"
converted_apos = converted.replace("'", "'")
self.assertEqual(
easy_xml.XmlToString(["test3", {"a": original}, original]),
'%s'
% (converted, converted_apos),
)
def test_EasyXml_pretty(self):
self.assertEqual(
easy_xml.XmlToString(
["test3", ["GrandParent", ["Parent1", ["Child"]], ["Parent2"]]],
pretty=True,
),
'\n'
"\n"
" \n"
" \n"
" \n"
" \n"
" \n"
" \n"
"\n",
)
def test_EasyXml_complex(self):
# We want to create:
target = (
''
""
''
"{D2250C20-3A94-4FB9-AF73-11BC5B73884B}"
"Win32Proj"
"automated_ui_tests"
""
''
"'
"Application"
"Unicode"
""
""
)
xml = easy_xml.XmlToString(
[
"Project",
[
"PropertyGroup",
{"Label": "Globals"},
["ProjectGuid", "{D2250C20-3A94-4FB9-AF73-11BC5B73884B}"],
["Keyword", "Win32Proj"],
["RootNamespace", "automated_ui_tests"],
],
["Import", {"Project": "$(VCTargetsPath)\\Microsoft.Cpp.props"}],
[
"PropertyGroup",
{
"Condition": "'$(Configuration)|$(Platform)'=='Debug|Win32'",
"Label": "Configuration",
},
["ConfigurationType", "Application"],
["CharacterSet", "Unicode"],
],
]
)
self.assertEqual(xml, target)
if __name__ == "__main__":
unittest.main()