예제 #1
0
 def test_downward_propogation(self):
     """Ensure propogation up and down the tree works"""
     tree = FairDependencyTree()
     # The supply two nodes
     tree.update_status('Loss Event Frequency', 'Supplied')
     tree.update_status('Loss Magnitude', 'Supplied')
     # Each of those nodes should now equal supplied
     statuses = tree.get_node_statuses()
     for node in [
         'Loss Event Frequency',
         'Loss Magnitude'
     ]:
         self.assertEqual(statuses[node], 'Supplied')
     # And inferior nodes should be 'Not Required'
     for node in [
         'Threat Event Frequency',
         'Vulnerability',
         'Contact Frequency',
         'Probability of Action',
         'Threat Capability',
         'Control Strength',
         'Primary Loss',
         'Secondary Loss',
         'Secondary Loss Event Frequency',
         'Secondary Loss Event Magnitude',
     ]:
         self.assertEqual(statuses[node], 'Not Required')
예제 #2
0
 def test_upward_propagation(self):
     """Ensure upward calculation propogation works"""
     tree = FairDependencyTree()
     # The supply three nodes
     tree.update_status('Loss Event Frequency', 'Supplied')
     tree.update_status('Primary Loss', 'Supplied')
     tree.update_status('Secondary Loss', 'Supplied')
     # Get statuses and check appropriate fields are calculable
     statuses = tree.get_node_statuses()
     for node in [
         'Risk', 
         'Loss Magnitude'
     ]:
         self.assertEqual(statuses[node], 'Calculable')
     # Now mark a node as calculated
     tree.update_status('Loss Magnitude', 'Calculated')
     statuses = tree.get_node_statuses()
     self.assertEqual(statuses['Loss Magnitude'], 'Calculated')
예제 #3
0
 def test_inspections(self):
     """Check functions returning bools"""
     # Create tree ready for calculation
     tree = FairDependencyTree()
     tree.update_status('Loss Event Frequency', 'Supplied')
     tree.update_status('Loss Magnitude', 'Supplied')
     # Assert that it is ready for calculation but not complete
     self.assertTrue(tree.ready_for_calculation())
     self.assertFalse(tree.calculation_completed())
     # Now mimic calculation and assert complete
     tree.update_status('Risk', 'Calculated')
     self.assertTrue(tree.calculation_completed())   
예제 #4
0
 def test_creation(self):
     """Check proper creation of tree."""
     tree = FairDependencyTree()
     self.assertEqual(len(tree.nodes), self.TOTAL_NODE_COUNT)
     self.assertEqual(len(tree._leaf_nodes), self.LEAF_NODE_COUNT)