示例#1
0
    def testaddnodechange(self):
        """
        Here we test the add_node_change method of the Chnage class.  We will do this
        by trying a simple name, node pair, a name non-node pair (which should raise
        a ValueError), a list of names and a single node (which should raise a ValueError),
        a list of names and a list of nodes, a single name and a list of nodes.
        """
        change = Change()
        node1 = JCD({"Changes": [{"parameters/Run_Number": 5}]})
        node2 = JCD({"Changes": [{"parameters/param2": 0.01}]})

        # ------ Test invalid name type, valid node type
        self.assertRaises(ValueError, change.add_node_change, 5, node1)

        # ------ Test valid name type, invalid node type
        self.assertRaises(ValueError, change.add_node_change, "change1", 5)

        # ------ Test valid name and node
        change.add_node_change("change1", node1)

        self.assertEqual(len(change.change_list), 1, msg="More than one change added during single add node")

        self.assertEqual(change.change_list[0], "change1", msg="Failed to add node change")

        self.assertEqual(change.jcd_objects[0], node1, msg="Failed to add jcd object")

        # ------- Test single name, list of nodes

        del change
        change = Change()
        change.add_node_change("change1+change2", [node1, node2])
        self.assertEqual(change.jcd_objects, [node1, node2], msg="Failed to set list of nodes with single name")
        self.assertEqual(change.change_list[0], "change1+change2", msg="Failed to set single name with list of nodes")

        # -------- Test list of names and list of nodes
        del change
        change = Change()
        change.add_node_change(["change1", "change2"], [node1, node2])
        self.assertEqual(
            change.change_list[0], ["change1", "change2"], msg="Failed to set list of names with list of nodes"
        )
        self.assertEqual(change.jcd_objects, [node1, node2], msg="Failed to set list of nodes with list of names")