test_version_converter_integration.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. """
  2. This file tests proper conversion of complex v1.0 odML files
  3. to v1.1 with all supported file formats.
  4. """
  5. import os
  6. import shutil
  7. import tempfile
  8. import unittest
  9. from odml import load
  10. from odml.tools.version_converter import VersionConverter as VC
  11. class TestVersionConverterIntegration(unittest.TestCase):
  12. def setUp(self):
  13. # Set up test environment
  14. dir_path = os.path.dirname(os.path.realpath(__file__))
  15. self.jsonfile = os.path.join(dir_path, "resources", "version_conversion_int.json")
  16. self.xmlfile = os.path.join(dir_path, "resources", "version_conversion_int.xml")
  17. self.yamlfile = os.path.join(dir_path, "resources", "version_conversion_int.yaml")
  18. self.tmp_dir = tempfile.mkdtemp(suffix=".odml")
  19. self.outfile = os.path.join(self.tmp_dir, "version_conversion.xml")
  20. def tearDown(self):
  21. if os.path.exists(self.tmp_dir):
  22. shutil.rmtree(self.tmp_dir)
  23. def test_convert_xml(self):
  24. VC(self.xmlfile).write_to_file(self.outfile)
  25. self.assertTrue(os.path.exists(self.outfile))
  26. self.check_result()
  27. def test_convert_yaml(self):
  28. with self.assertRaises(Exception):
  29. VC(self.yamlfile).write_to_file(self.outfile)
  30. VC(self.yamlfile).write_to_file(self.outfile, "YAML")
  31. self.assertTrue(os.path.exists(self.outfile))
  32. self.check_result()
  33. def test_convert_json(self):
  34. with self.assertRaises(Exception):
  35. VC(self.jsonfile).write_to_file(self.outfile)
  36. VC(self.jsonfile).write_to_file(self.outfile, "JSON")
  37. self.assertTrue(os.path.exists(self.outfile))
  38. self.check_result()
  39. def check_result(self):
  40. doc = load(self.outfile)
  41. # Test document attribute export
  42. self.assertEqual(doc.author, "author")
  43. self.assertEqual(doc.version, "v1.13")
  44. repo = "http://portal.g-node.org/odml/terminologies/v1.1/terminologies.xml"
  45. self.assertEqual(doc.repository, repo)
  46. self.assertEqual(len(doc.sections), 3)
  47. sec = doc.sections["sec_one"]
  48. self.assertEqual(sec.definition, "def s1")
  49. self.assertEqual(sec.reference, "ref s1")
  50. self.assertEqual(sec.type, "mainsec")
  51. self.assertEqual(len(sec.sections), 1)
  52. self.assertEqual(len(sec.properties), 3)
  53. prop = sec.properties["prop_one"]
  54. self.assertEqual(prop.definition, "def prop1")
  55. self.assertEqual(prop.dependency, "dep p1")
  56. self.assertEqual(prop.dependency_value, "dep val p1")
  57. self.assertEqual(prop.reference, "ref val 1")
  58. self.assertEqual(prop.uncertainty, "11")
  59. self.assertEqual(prop.unit, "arbitrary")
  60. self.assertEqual(prop.value_origin, "filename val 1")
  61. self.assertEqual(prop.dtype, "string")
  62. self.assertEqual(len(prop.values), 3)
  63. prop = sec.properties["prop_two"]
  64. self.assertEqual(len(prop.values), 8)
  65. prop = sec.properties["prop_three"]
  66. self.assertEqual(len(prop.values), 0)