summaryrefslogtreecommitdiff
path: root/morphlib/yamlparse_tests.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2013-01-28 16:57:18 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2013-01-28 16:57:18 +0000
commite97bd4be721834e24c32838c2ecd5149ef7c7101 (patch)
tree195e2ecfa8afb38522b81ed030588eed8785017f /morphlib/yamlparse_tests.py
parent2024583a303ef1a79709b7ecc9fc2dce22e8ce98 (diff)
parente6dc394c0f31429b2f54c77b20223651a0ab68ee (diff)
downloadmorph-e97bd4be721834e24c32838c2ecd5149ef7c7101.tar.gz
Merge branch 'jjardon/yaml-v2'
Diffstat (limited to 'morphlib/yamlparse_tests.py')
-rw-r--r--morphlib/yamlparse_tests.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/morphlib/yamlparse_tests.py b/morphlib/yamlparse_tests.py
new file mode 100644
index 00000000..cb658e15
--- /dev/null
+++ b/morphlib/yamlparse_tests.py
@@ -0,0 +1,69 @@
+# Copyright (C) 2013 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import unittest
+
+try:
+ from collections import OrderedDict
+except ImportError:
+ from ordereddict import OrderedDict
+import yaml
+
+import morphlib.yamlparse as yamlparse
+
+
+class YAMLParseTests(unittest.TestCase):
+
+ example_text = '''\
+name: foo
+kind: chunk
+build-system: manual
+'''
+
+ example_dict = OrderedDict([
+ ('name', 'foo'),
+ ('kind', 'chunk'),
+ ('build-system', 'manual'),
+ ])
+
+ def test_loads_as_ordered_dict(self):
+ m = yamlparse.load(self.example_text)
+ self.assertEqual(type(m), OrderedDict)
+
+ def test_dumps_ordered_dicts(self):
+ self.assertEqual(self.example_text,
+ yamlparse.dump(self.example_dict))
+
+ def test_non_map_raises(self):
+ incorrect_type = '''\
+!!map
+- foo
+- bar
+'''
+ self.assertRaises(yaml.YAMLError, yamlparse.load, incorrect_type)
+
+ def test_complex_key_fails_KNOWNFAILURE(self):
+ complex_key = '? { foo: bar, baz: qux }: True'
+ self.assertRaises(yaml.YAMLError, yamlparse.load, complex_key)
+
+ def test_represents_non_scalar_nodes(self):
+ self.assertTrue(
+ yamlparse.dump(
+ {
+ ('a', 'b'): {
+ "foo": 1,
+ "bar": 2,
+ }
+ }, default_flow_style=None))