@@ -33,10 +33,9 @@ mod tests {
3333
3434 #[ test]
3535 fn test_genesis_block_validation ( ) {
36- let mut validator = HeaderValidator :: new ( ValidationMode :: Full ) ;
37-
3836 for network in [ Network :: Dash , Network :: Testnet , Network :: Regtest ] {
39- validator. set_network ( network) ;
37+ let validator = HeaderValidator :: new ( ValidationMode :: Full , network) ;
38+
4039 let genesis = genesis_block ( network) . header ;
4140
4241 // Genesis block should validate with no previous header
@@ -50,7 +49,7 @@ mod tests {
5049
5150 #[ test]
5251 fn test_maximum_target_validation ( ) {
53- let validator = HeaderValidator :: new ( ValidationMode :: Full ) ;
52+ let validator = HeaderValidator :: new ( ValidationMode :: Full , Network :: Dash ) ;
5453
5554 // Create header with maximum allowed target (easiest difficulty)
5655 let max_target_bits = 0x1e0fffff ; // Maximum target for testing
@@ -71,7 +70,7 @@ mod tests {
7170
7271 #[ test]
7372 fn test_minimum_target_validation ( ) {
74- let validator = HeaderValidator :: new ( ValidationMode :: Full ) ;
73+ let validator = HeaderValidator :: new ( ValidationMode :: Full , Network :: Dash ) ;
7574
7675 // Create header with very low target (hardest difficulty)
7776 let min_target_bits = 0x17000000 ; // Very difficult target
@@ -93,7 +92,7 @@ mod tests {
9392
9493 #[ test]
9594 fn test_zero_prev_blockhash ( ) {
96- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
95+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
9796
9897 // First header with zero prev_blockhash (like genesis)
9998 let header1 = create_test_header_with_params (
@@ -126,7 +125,7 @@ mod tests {
126125
127126 #[ test]
128127 fn test_all_ff_prev_blockhash ( ) {
129- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
128+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
130129
131130 // Header with all 0xFF prev_blockhash
132131 let header = create_test_header_with_params (
@@ -162,7 +161,7 @@ mod tests {
162161
163162 #[ test]
164163 fn test_timestamp_boundaries ( ) {
165- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
164+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
166165
167166 // Test with minimum timestamp (0)
168167 let header_min_time = create_test_header_with_params (
@@ -193,7 +192,7 @@ mod tests {
193192
194193 #[ test]
195194 fn test_version_edge_cases ( ) {
196- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
195+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
197196
198197 // Test various version values
199198 let versions = [ 0 , 1 , 0x20000000 , 0x20000001 , u32:: MAX ] ;
@@ -217,7 +216,7 @@ mod tests {
217216
218217 #[ test]
219218 fn test_large_chain_validation ( ) {
220- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
219+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
221220
222221 // Create a large chain
223222 let chain_size = 1000 ;
@@ -240,7 +239,7 @@ mod tests {
240239 }
241240
242241 // Should validate entire chain
243- assert ! ( validator. validate_chain_basic ( & headers) . is_ok( ) ) ;
242+ assert ! ( validator. validate_headers ( & headers) . is_ok( ) ) ;
244243
245244 // Break the chain in the middle
246245 let broken_index = chain_size / 2 ;
@@ -256,14 +255,12 @@ mod tests {
256255 ) ;
257256
258257 // Should fail validation
259- let result = validator. validate_chain_basic ( & headers) ;
258+ let result = validator. validate_headers ( & headers) ;
260259 assert ! ( matches!( result, Err ( ValidationError :: InvalidHeaderChain ( _) ) ) ) ;
261260 }
262261
263262 #[ test]
264263 fn test_single_header_chain_validation ( ) {
265- let validator = HeaderValidator :: new ( ValidationMode :: Full ) ;
266-
267264 let header = create_test_header_with_params (
268265 0x20000000 ,
269266 dashcore:: BlockHash :: from_raw_hash ( dashcore_hashes:: hash_x11:: Hash :: from_byte_array (
@@ -278,13 +275,17 @@ mod tests {
278275 let headers = vec ! [ header] ;
279276
280277 // Single header chain should validate in both basic and full modes
281- assert ! ( validator. validate_chain_basic( & headers) . is_ok( ) ) ;
282- assert ! ( validator. validate_chain_full( & headers, false ) . is_ok( ) ) ;
278+ assert ! ( HeaderValidator :: new( ValidationMode :: Basic , Network :: Dash )
279+ . validate_headers( & headers)
280+ . is_ok( ) ) ;
281+ assert ! ( HeaderValidator :: new( ValidationMode :: Full , Network :: Dash )
282+ . validate_headers( & headers)
283+ . is_ok( ) ) ;
283284 }
284285
285286 #[ test]
286287 fn test_duplicate_headers_in_chain ( ) {
287- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
288+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
288289
289290 let header = create_test_header_with_params (
290291 0x20000000 ,
@@ -301,13 +302,13 @@ mod tests {
301302 let headers = vec ! [ header, header] ;
302303
303304 // Should fail because second header's prev_blockhash won't match first header's hash
304- let result = validator. validate_chain_basic ( & headers) ;
305+ let result = validator. validate_headers ( & headers) ;
305306 assert ! ( matches!( result, Err ( ValidationError :: InvalidHeaderChain ( _) ) ) ) ;
306307 }
307308
308309 #[ test]
309310 fn test_merkle_root_variations ( ) {
310- let validator = HeaderValidator :: new ( ValidationMode :: Basic ) ;
311+ let validator = HeaderValidator :: new ( ValidationMode :: Basic , Network :: Dash ) ;
311312
312313 // Test various merkle root patterns
313314 let merkle_patterns = [
@@ -340,7 +341,7 @@ mod tests {
340341
341342 #[ test]
342343 fn test_mode_switching_during_chain_validation ( ) {
343- let mut validator = HeaderValidator :: new ( ValidationMode :: None ) ;
344+ let mut validator = HeaderValidator :: new ( ValidationMode :: None , Network :: Dash ) ;
344345
345346 // Create headers with invalid PoW
346347 let mut headers = vec ! [ ] ;
@@ -361,18 +362,16 @@ mod tests {
361362 headers. push ( header) ;
362363 }
363364
364- // Should pass with None mode (ValidationMode::None always passes)
365- let result = validator. validate_chain_full ( & headers, true ) ;
365+ let result = validator. validate_headers ( & headers) ;
366366 assert ! ( result. is_ok( ) , "ValidationMode::None should always pass, but got: {:?}" , result) ;
367367
368- // Switch to Full mode
369368 validator. set_mode ( ValidationMode :: Full ) ;
370-
371369 // Should now fail due to invalid PoW
372- let result = validator. validate_chain_full ( & headers, true ) ;
370+ let result = validator. validate_headers ( & headers) ;
373371 assert ! ( matches!( result, Err ( ValidationError :: InvalidProofOfWork ) ) ) ;
374372
375- // But should pass without PoW check
376- assert ! ( validator. validate_chain_full( & headers, false ) . is_ok( ) ) ;
373+ validator. set_mode ( ValidationMode :: None ) ;
374+ let result = validator. validate_headers ( & headers) ;
375+ assert ! ( result. is_ok( ) , "ValidationMode::None should always pass, but got: {:?}" , result) ;
377376 }
378377}
0 commit comments