@@ -316,6 +316,60 @@ mod tests {
316316 time: 1740434112 ,
317317 fork_id: ForkId {
318318 fork_hash: H32 :: from_str( "0xdfbd9bed" ) . unwrap( ) ,
319+ fork_next: 1759308480 ,
320+ } ,
321+ is_valid: true ,
322+ } ,
323+ TestCase {
324+ head: 123 ,
325+ time: 1759308479 ,
326+ fork_id: ForkId {
327+ fork_hash: H32 :: from_str( "0xdfbd9bed" ) . unwrap( ) ,
328+ fork_next: 1759308480 ,
329+ } ,
330+ is_valid: true ,
331+ } ,
332+ TestCase {
333+ head: 123 ,
334+ time: 1759308480 ,
335+ fork_id: ForkId {
336+ fork_hash: H32 :: from_str( "0x783def52" ) . unwrap( ) ,
337+ fork_next: 1759800000 ,
338+ } ,
339+ is_valid: true ,
340+ } ,
341+ TestCase {
342+ head: 123 ,
343+ time: 1759799999 ,
344+ fork_id: ForkId {
345+ fork_hash: H32 :: from_str( "0x783def52" ) . unwrap( ) ,
346+ fork_next: 1759800000 ,
347+ } ,
348+ is_valid: true ,
349+ } ,
350+ TestCase {
351+ head: 123 ,
352+ time: 1759800000 ,
353+ fork_id: ForkId {
354+ fork_hash: H32 :: from_str( "0xa280a45c" ) . unwrap( ) ,
355+ fork_next: 1760389824 ,
356+ } ,
357+ is_valid: true ,
358+ } ,
359+ TestCase {
360+ head: 123 ,
361+ time: 1760389823 ,
362+ fork_id: ForkId {
363+ fork_hash: H32 :: from_str( "0xa280a45c" ) . unwrap( ) ,
364+ fork_next: 1760389824 ,
365+ } ,
366+ is_valid: true ,
367+ } ,
368+ TestCase {
369+ head: 123 ,
370+ time: 1760389824 ,
371+ fork_id: ForkId {
372+ fork_hash: H32 :: from_str( "0x9bc6cb31" ) . unwrap( ) ,
319373 fork_next: 0 ,
320374 } ,
321375 is_valid: true ,
@@ -324,7 +378,111 @@ mod tests {
324378 head: 123 ,
325379 time: 2740434112 ,
326380 fork_id: ForkId {
327- fork_hash: H32 :: from_str( "0xdfbd9bed" ) . unwrap( ) ,
381+ fork_hash: H32 :: from_str( "0x9bc6cb31" ) . unwrap( ) ,
382+ fork_next: 0 ,
383+ } ,
384+ is_valid: true ,
385+ } ,
386+ ] ;
387+ assert_test_cases ( test_cases, genesis. config , genesis_header) ;
388+ }
389+
390+ #[ test]
391+ fn hoodi_test_cases ( ) {
392+ let genesis_file = std:: fs:: File :: open ( "../../cmd/ethrex/networks/hoodi/genesis.json" )
393+ . expect ( "Failed to open genesis file" ) ;
394+ let genesis_reader = BufReader :: new ( genesis_file) ;
395+ let genesis: Genesis =
396+ serde_json:: from_reader ( genesis_reader) . expect ( "Failed to read genesis file" ) ;
397+ let genesis_header = genesis. get_block ( ) . header ;
398+ // See https://github.com/ethereum/go-ethereum/blob/444a6d007a08bddcec0b68b60ab507ea8bc1d078/core/forkid/forkid_test.go#L100
399+ let test_cases: Vec < TestCase > = vec ! [
400+ TestCase {
401+ head: 123 ,
402+ time: 0 ,
403+ fork_id: ForkId {
404+ fork_hash: H32 :: from_str( "0xbef71d30" ) . unwrap( ) ,
405+ fork_next: 1742999832 ,
406+ } ,
407+ is_valid: true ,
408+ } ,
409+ TestCase {
410+ head: 123 ,
411+ time: 1742999831 ,
412+ fork_id: ForkId {
413+ fork_hash: H32 :: from_str( "0xbef71d30" ) . unwrap( ) ,
414+ fork_next: 1742999832 ,
415+ } ,
416+ is_valid: true ,
417+ } ,
418+ TestCase {
419+ head: 123 ,
420+ time: 1742999832 ,
421+ fork_id: ForkId {
422+ fork_hash: H32 :: from_str( "0x0929e24e" ) . unwrap( ) ,
423+ fork_next: 1761677592 ,
424+ } ,
425+ is_valid: true ,
426+ } ,
427+ TestCase {
428+ head: 123 ,
429+ time: 1761677591 ,
430+ fork_id: ForkId {
431+ fork_hash: H32 :: from_str( "0x0929e24e" ) . unwrap( ) ,
432+ fork_next: 1761677592 ,
433+ } ,
434+ is_valid: true ,
435+ } ,
436+ TestCase {
437+ head: 123 ,
438+ time: 1761677592 ,
439+ fork_id: ForkId {
440+ fork_hash: H32 :: from_str( "0xe7e0e7ff" ) . unwrap( ) ,
441+ fork_next: 1762365720 ,
442+ } ,
443+ is_valid: true ,
444+ } ,
445+ TestCase {
446+ head: 123 ,
447+ time: 1762365719 ,
448+ fork_id: ForkId {
449+ fork_hash: H32 :: from_str( "0xe7e0e7ff" ) . unwrap( ) ,
450+ fork_next: 1762365720 ,
451+ } ,
452+ is_valid: true ,
453+ } ,
454+ TestCase {
455+ head: 123 ,
456+ time: 1762365720 ,
457+ fork_id: ForkId {
458+ fork_hash: H32 :: from_str( "0x3893353e" ) . unwrap( ) ,
459+ fork_next: 1762955544 ,
460+ } ,
461+ is_valid: true ,
462+ } ,
463+ TestCase {
464+ head: 123 ,
465+ time: 1762955543 ,
466+ fork_id: ForkId {
467+ fork_hash: H32 :: from_str( "0x3893353e" ) . unwrap( ) ,
468+ fork_next: 1762955544 ,
469+ } ,
470+ is_valid: true ,
471+ } ,
472+ TestCase {
473+ head: 123 ,
474+ time: 1762955544 ,
475+ fork_id: ForkId {
476+ fork_hash: H32 :: from_str( "0x23aa1351" ) . unwrap( ) ,
477+ fork_next: 0 ,
478+ } ,
479+ is_valid: true ,
480+ } ,
481+ TestCase {
482+ head: 123 ,
483+ time: 2740434112 ,
484+ fork_id: ForkId {
485+ fork_hash: H32 :: from_str( "0x23aa1351" ) . unwrap( ) ,
328486 fork_next: 0 ,
329487 } ,
330488 is_valid: true ,
@@ -424,6 +582,60 @@ mod tests {
424582 time: 1741159776 ,
425583 fork_id: ForkId {
426584 fork_hash: H32 :: from_str( "0xed88b5fd" ) . unwrap( ) ,
585+ fork_next: 1760427360 ,
586+ } ,
587+ is_valid: true ,
588+ } ,
589+ TestCase {
590+ head: 1735372 ,
591+ time: 1760427359 ,
592+ fork_id: ForkId {
593+ fork_hash: H32 :: from_str( "0xed88b5fd" ) . unwrap( ) ,
594+ fork_next: 1760427360 ,
595+ } ,
596+ is_valid: true ,
597+ } ,
598+ TestCase {
599+ head: 1735372 ,
600+ time: 1760427360 ,
601+ fork_id: ForkId {
602+ fork_hash: H32 :: from_str( "0xe2ae4999" ) . unwrap( ) ,
603+ fork_next: 1761017184 ,
604+ } ,
605+ is_valid: true ,
606+ } ,
607+ TestCase {
608+ head: 1735372 ,
609+ time: 1761017183 ,
610+ fork_id: ForkId {
611+ fork_hash: H32 :: from_str( "0xe2ae4999" ) . unwrap( ) ,
612+ fork_next: 1761017184 ,
613+ } ,
614+ is_valid: true ,
615+ } ,
616+ TestCase {
617+ head: 1735372 ,
618+ time: 1761017184 ,
619+ fork_id: ForkId {
620+ fork_hash: H32 :: from_str( "0x56078a1e" ) . unwrap( ) ,
621+ fork_next: 1761607008 ,
622+ } ,
623+ is_valid: true ,
624+ } ,
625+ TestCase {
626+ head: 1735372 ,
627+ time: 1761607007 ,
628+ fork_id: ForkId {
629+ fork_hash: H32 :: from_str( "0x56078a1e" ) . unwrap( ) ,
630+ fork_next: 1761607008 ,
631+ } ,
632+ is_valid: true ,
633+ } ,
634+ TestCase {
635+ head: 1735372 ,
636+ time: 1761607008 ,
637+ fork_id: ForkId {
638+ fork_hash: H32 :: from_str( "0x268956b6" ) . unwrap( ) ,
427639 fork_next: 0 ,
428640 } ,
429641 is_valid: true ,
@@ -432,13 +644,13 @@ mod tests {
432644 head: 1735372 ,
433645 time: 2741159776 ,
434646 fork_id: ForkId {
435- fork_hash: H32 :: from_str( "0xed88b5fd " ) . unwrap( ) ,
647+ fork_hash: H32 :: from_str( "0x268956b6 " ) . unwrap( ) ,
436648 fork_next: 0 ,
437649 } ,
438650 is_valid: true ,
439651 } ,
440652 ] ;
441- assert_test_cases ( test_cases, genesis. config , genesis_hash) ;
653+ assert_test_cases ( test_cases, genesis. config , genesis_hash. clone ( ) ) ;
442654 }
443655
444656 #[ test]
0 commit comments