Bobby Bruce has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/58729?usp=email )
(
4 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the
submitted one.
)Change subject: tests,stdlib: Add a test for JsonSerializable
......................................................................
tests,stdlib: Add a test for JsonSerializable
Change-Id: I9e1fa6ee67f5d73d41fa9972bdb9a3da7dda8957
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/58729
Maintainer: Jason Lowe-Power <power...@gmail.com>
Reviewed-by: Jason Lowe-Power <power...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
A tests/pyunit/pyunit_jsonserializable_check.py
1 file changed, 84 insertions(+), 0 deletions(-)
Approvals:
Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/tests/pyunit/pyunit_jsonserializable_check.py
b/tests/pyunit/pyunit_jsonserializable_check.py
new file mode 100644
index 0000000..97642a4
--- /dev/null
+++ b/tests/pyunit/pyunit_jsonserializable_check.py
@@ -0,0 +1,71 @@
+# Copyright (c) 2022 The Regents of The University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import unittest
+from m5.ext.pystats.jsonserializable import JsonSerializable
+
+
+class MockSerializable(JsonSerializable):
+ def __init__(self):
+ self.child_1 = MockSerializableChild()
+ self.child_1.stat1 = 2
+ self.child_1.stat2 = "3"
+ self.child_list = []
+
+ child_list_1 = MockSerializableChild()
+ child_list_1.stat1 = "hello"
+ self.child_list.append(child_list_1)
+ child_list_2 = MockSerializableChild()
+ child_list_2.list_stat2 = ["1", 2, "3", 4, 5.2, None]
+ self.child_list.append(child_list_2)
+
+
+class MockSerializableChild(JsonSerializable):
+ def __init__(self):
+ pass
+
+
+class JsonSerializableTestSuite(unittest.TestCase):
+ def test_to_json(self):
+ obj = MockSerializable()
+ obj_json = obj.to_json()
+ self.assertTrue("child_1" in obj_json)
+ self.assertTrue("stat1" in obj_json["child_1"])
+ self.assertEquals(2, obj_json["child_1"]["stat1"])
+ self.assertTrue("stat2" in obj_json["child_1"])
+ self.assertEquals("3", obj_json["child_1"]["stat2"])
+ self.assertTrue("child_list" in obj_json)
+ self.assertEquals(2, len(obj_json["child_list"]))
+ self.assertTrue("stat1" in obj_json["child_list"][0])
+ self.assertEqual("hello", obj_json["child_list"][0]["stat1"])
+ self.assertTrue("list_stat2" in obj_json["child_list"][1])
+ self.assertEquals(6, len(obj_json["child_list"][1]["list_stat2"]))
+ self.assertEquals("1", obj_json["child_list"][1]["list_stat2"][0])
+ self.assertEquals(2, obj_json["child_list"][1]["list_stat2"][1])
+ self.assertEquals("3", obj_json["child_list"][1]["list_stat2"][2])
+ self.assertEquals(4, obj_json["child_list"][1]["list_stat2"][3])
+ self.assertEquals(5.2, obj_json["child_list"][1]["list_stat2"][4])
+ self.assertEquals(None, obj_json["child_list"][1]["list_stat2"][5])
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/58729?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I9e1fa6ee67f5d73d41fa9972bdb9a3da7dda8957
Gerrit-Change-Number: 58729
Gerrit-PatchSet: 7
Gerrit-Owner: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org