Belle II Software  release-05-02-19
json_serialize_test.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """
5 Test serialization of JSON objects.
6 """
7 
8 import unittest
9 import json
10 import json_objects
11 
12 
13 # @cond internal_test
14 
15 
16 class TestJsonSerialize(unittest.TestCase):
17  """
18  Test serialization of JSON objects.
19 
20  This is usually done as follows:
21 
22  1. Create JSON class
23  2. Serialize
24  3. Deserialize
25  4. Check that extracted information is correct
26  """
27 
28  def test_serialize_comparison(self):
29 
30  revs = [json_objects.Revision("run1", "iae223auiae", "git_hash1", ""),
31  json_objects.Revision("run2", "iuiaehuiaen", "git_hash1", ""),
32  json_objects.Revision("arun", "buie223aae", "git_hash1", "")]
33 
34  cplot = json_objects.ComparisonPlot("plot_one")
35 
37  compared_revisions=revs,
38  plots=[cplot],
39  title="",
40  rootfile="",
41  package=""
42  )
43 
44  cp = json_objects.ComparisonPackage("pack1", [cfile])
45 
46  comp = json_objects.Comparison(revs, [cp])
47 
48  js = json_objects.dumps(comp)
49  js_decode = json.loads(js)
50 
51  self.assertEqual(1, len(js_decode["packages"]))
52  self.assertEqual("arun_run1_run2", js_decode["label"])
53  self.assertEqual("pack1", js_decode["packages"][0]["name"])
54 
55  def test_serialize_revision_nested(self):
56  rr1 = json_objects.Revision("label1", "date", "git_hash1", "black")
57  rr2 = json_objects.Revision("label2", "date", "git_hash2", "black")
58  rlist = json_objects.Revisions([rr1, rr2])
59 
60  js = json_objects.dumps(rlist)
61  js_decode = json.loads(js)
62 
63  self.assertEqual(2, len(js_decode["revisions"]))
64  self.assertEqual("label1", js_decode["revisions"][0]["label"])
65  self.assertEqual("label2", js_decode["revisions"][1]["label"])
66 
67  def test_comparison_plot_file(self):
69  title="title",
70  package="package",
71  rootfile="rootfile"
72  )
73  ccp2 = json_objects.ComparisonPlotFile("package", "title", "rootfile")
74 
75  self.assertEqual(ccp1.title, "title")
76  self.assertEqual(ccp1.package, "package")
77 
78  self.assertEqual(ccp2.title, "title")
79  self.assertEqual(ccp2.package, "package")
80 
81 
82 if __name__ == "__main__":
83  unittest.main()
84 
85 # @endcond
json_objects.dumps
def dumps(obj)
Definition: json_objects.py:563
json_objects.Comparison
Definition: json_objects.py:521
json_objects.ComparisonPlot
Definition: json_objects.py:341
json_objects.ComparisonPlotFile
Definition: json_objects.py:266
json_objects.ComparisonPackage
Definition: json_objects.py:462
json_objects.Revision
Definition: json_objects.py:28
json_objects.Revisions
Definition: json_objects.py:62