summaryrefslogtreecommitdiff
path: root/tests/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'tests/plugins')
-rw-r--r--tests/plugins/yamlrdr.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/plugins/yamlrdr.py b/tests/plugins/yamlrdr.py
new file mode 100644
index 0000000..7f65624
--- /dev/null
+++ b/tests/plugins/yamlrdr.py
@@ -0,0 +1,94 @@
+#!/usr/bin/python3-dbg
+# -*- coding: utf-8 -*-
+
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.plugins.yaml import YamlReader
+import tempfile
+
+
+class TestYamlReader(ChrysalideTestCase):
+ """TestCase for the Yaml reader."""
+
+
+ @classmethod
+ def setUpClass(cls):
+
+ super(TestYamlReader, cls).setUpClass()
+
+ cls._simple = tempfile.NamedTemporaryFile()
+
+ cls.simple_data = b'''
+meta:
+ id: java_class
+ endian: be
+ file-extension: class
+ xref:
+ justsolve: Java
+ pronom: x-fmt/415
+ 'wiki"data': Q2193155
+ license: CC0-1.0
+
+'''
+
+ cls._simple.write(cls.simple_data)
+
+ cls._simple.flush()
+
+ cls.log('Using temporary file "%s"' % cls._simple.name)
+
+
+ @classmethod
+ def tearDownClass(cls):
+
+ super(TestYamlReader, cls).tearDownClass()
+
+ cls.log('Delete file "%s"' % cls._simple.name)
+
+ cls._simple.close()
+
+
+ def testSimpleYamlContent(self):
+ """Validate simple Yaml content reader."""
+
+ reader = YamlReader.new_from_path(self._simple.name)
+ self.assertIsNotNone(reader)
+
+
+ def _build_node_desc(node, left):
+
+ line = node.yaml_line
+
+ desc = left + line.key + ':' + (' ' + line.value if line.value else '') + '\n'
+
+ for child in node.children:
+ desc += _build_node_desc(child, left + ' ')
+
+ return desc
+
+
+ fulldesc = ''
+
+ for rn in reader.tree.root_nodes:
+ fulldesc += _build_node_desc(rn, '')
+
+ self.assertEqual('\n' + fulldesc + '\n', self.simple_data.decode('ascii'))
+
+
+ def testSimpleYamlContentFinder(self):
+ """Validate simple Yaml content search."""
+
+ reader = YamlReader.new_from_path(self._simple.name)
+ self.assertIsNotNone(reader)
+
+ found = reader.tree.find_node_by_path('/meta/xref')
+
+ self.assertEqual(found.yaml_line.key, 'xref')
+
+ found = reader.tree.find_node_by_path('/meta/xref/')
+
+ self.assertEqual(found.yaml_line.key, 'xref')
+
+ found = reader.tree.find_node_by_path('/meta/xref/aa')
+
+ self.assertIsNone(found)