@@ -61,7 +61,7 @@ def test_ref_value_pass(self):
6161
6262class TestOneExposure (unittest .TestCase ):
6363 '''Test one_exposure function'''
64- def test_ref_value_pass (self ):
64+ def test_ref_value_insure_pass (self ):
6565 ''' Test result against reference value'''
6666 # Read demo entity values
6767 # Set the entity default file to the demo one
@@ -72,6 +72,9 @@ def test_ref_value_pass(self):
7272 hazard = Hazard ('TC' , HAZ_TEST_MAT )
7373 # Create impact object
7474 impact = Impact ()
75+ impact .at_event = np .zeros (hazard .intensity .shape [0 ])
76+ impact .eai_exp = np .zeros (len (ent .exposures .value ))
77+ impact .tot_value = 0
7578
7679 # Assign centroids to exposures
7780 ent .exposures .assign (hazard )
@@ -82,40 +85,34 @@ def test_ref_value_pass(self):
8285 imp_id = ent .exposures .impact_id [iexp ]
8386 imp_fun = ent .impact_funcs .get_func (hazard .tag .haz_type , imp_id )[0 ]
8487 # Compute
85- event_row , result = impact ._one_exposure (iexp , ent .exposures , \
86- hazard , imp_fun )
87- # Check sizes
88- num_res = 1280
89- self .assertEqual (num_res , len (event_row ))
90- self .assertEqual (num_res , len (result ))
88+ insure_flag = True
89+ impact ._exp_impact (np .array ([iexp ]), ent .exposures , hazard , imp_fun , insure_flag )
90+
91+ self .assertEqual (impact .eai_exp .size , ent .exposures .size )
92+ self .assertEqual (impact .at_event .size , hazard .intensity .shape [0 ])
93+
94+ events_pos = hazard .intensity [:, ent .exposures .assigned ['TC' ][iexp ]].nonzero ()[0 ]
95+ res_exp = np .zeros ((ent .exposures .size ))
96+ res_exp [iexp ] = np .sum (impact .at_event [events_pos ] * hazard .frequency [events_pos ])
97+ self .assertTrue (np .array_equal (res_exp , impact .eai_exp ))
9198
99+ self .assertEqual (0 , impact .at_event [12 ])
92100 # Check first 3 values
93- self .assertEqual (0 , result [0 ])
94- self .assertEqual (0 , result [1 ])
95- self .assertEqual (1.0626600695059455e+06 , result [2 ])
96- self .assertEqual (12 , event_row [0 ])
97- self .assertEqual (41 , event_row [1 ])
98- self .assertEqual (44 , event_row [2 ])
101+ self .assertEqual (0 , impact .at_event [12 ])
102+ self .assertEqual (0 , impact .at_event [41 ])
103+ self .assertEqual (1.0626600695059455e+06 , impact .at_event [44 ])
99104
100105 # Check intermediate values
101- self .assertEqual (0 , result [678 ])
102- self .assertEqual (0 , result [543 ])
103- self .assertEqual (0 , result [982 ])
104- self .assertEqual (1.3318063850487845e+08 , result [750 ])
105- self .assertEqual (4.667108555054083e+06 , result [917 ])
106- self .assertEqual (6281 , event_row [678 ])
107- self .assertEqual (4998 , event_row [543 ])
108- self .assertEqual (9527 , event_row [982 ])
109- self .assertEqual (7192 , event_row [750 ])
110- self .assertEqual (8624 , event_row [917 ])
106+ self .assertEqual (0 , impact .at_event [6281 ])
107+ self .assertEqual (0 , impact .at_event [4998 ])
108+ self .assertEqual (0 , impact .at_event [9527 ])
109+ self .assertEqual (1.3318063850487845e+08 , impact .at_event [7192 ])
110+ self .assertEqual (4.667108555054083e+06 , impact .at_event [8624 ])
111111
112112 # Check last 3 values
113- self .assertEqual (0 , result [num_res - 1 ])
114- self .assertEqual (0 , result [num_res - 2 ])
115- self .assertEqual (0 , result [num_res - 3 ])
116- self .assertEqual (14349 , event_row [num_res - 1 ])
117- self .assertEqual (14347 , event_row [num_res - 2 ])
118- self .assertEqual (14309 , event_row [num_res - 3 ])
113+ self .assertEqual (0 , impact .at_event [14349 ])
114+ self .assertEqual (0 , impact .at_event [14347 ])
115+ self .assertEqual (0 , impact .at_event [14309 ])
119116
120117class TestCalc (unittest .TestCase ):
121118 ''' Test impact calc method.'''
@@ -145,7 +142,7 @@ def test_ref_value_pass(self):
145142 self .assertEqual (0 , impact .at_event [0 ])
146143 self .assertEqual (0 , impact .at_event [int (num_events / 2 )])
147144 self .assertAlmostEqual (1.472482938320243e+08 , impact .at_event [13809 ])
148- self .assertEqual (7.076504723057620e +10 , impact .at_event [12147 ])
145+ self .assertEqual (7.076504723057619e +10 , impact .at_event [12147 ])
149146 self .assertEqual (0 , impact .at_event [num_events - 1 ])
150147 # impact.eai_exp == EDS.ED_at_centroid in MATLAB
151148 self .assertEqual (num_exp , len (impact .eai_exp ))
@@ -160,10 +157,11 @@ def test_ref_value_pass(self):
160157 impact .eai_exp [int (num_exp - 1 )]))
161158 # impact.tot_value == EDS.Value in MATLAB
162159 # impact.aai_agg == EDS.ED in MATLAB
163- self .assertAlmostEqual (6.570532945599104e +11 , impact .tot_value )
160+ self .assertAlmostEqual (6.570532945599105e +11 , impact .tot_value )
164161 self .assertAlmostEqual (6.512201157564421e+09 , impact .aai_agg , 5 )
165162 self .assertTrue (np .isclose (6.512201157564421e+09 , impact .aai_agg ))
166-
163+
164+
167165# Execute Tests
168166TESTS = unittest .TestLoader ().loadTestsFromTestCase (TestOneExposure )
169167TESTS .addTests (unittest .TestLoader ().loadTestsFromTestCase (TestCalc ))
0 commit comments