@@ -169,7 +169,38 @@ func TestRandomConfigDescription(t *testing.T) {
169169 out := config .Description (nil )
170170 require .Contains (t , out , "Regolith: @ genesis" )
171171 })
172- t .Run ("regolith date" , func (t * testing.T ) {
172+ t .Run ("optimism forks check, date" , func (t * testing.T ) {
173+ config := randConfig ()
174+ r := uint64 (1677119335 )
175+ config .RegolithTime = & r
176+ c := uint64 (1677119336 )
177+ config .CanyonTime = & c
178+ d := uint64 (1677119337 )
179+ config .DeltaTime = & d
180+ e := uint64 (1677119338 )
181+ config .EcotoneTime = & e
182+ f := uint64 (1677119339 )
183+ config .FjordTime = & f
184+ h := uint64 (1677119340 )
185+ config .HoloceneTime = & h
186+ i := uint64 (1677119341 )
187+ config .IsthmusTime = & i
188+ it := uint64 (1677119342 )
189+ config .InteropTime = & it
190+
191+ out := config .Description (nil )
192+ // Don't check human-readable part of the date, it's timezone-dependent.
193+ // Don't make this test fail only in Australia :')
194+ require .Contains (t , out , fmt .Sprintf ("Regolith: @ %d ~ " , r ))
195+ require .Contains (t , out , fmt .Sprintf ("Canyon: @ %d ~ " , c ))
196+ require .Contains (t , out , fmt .Sprintf ("Delta: @ %d ~ " , d ))
197+ require .Contains (t , out , fmt .Sprintf ("Ecotone: @ %d ~ " , e ))
198+ require .Contains (t , out , fmt .Sprintf ("Fjord: @ %d ~ " , f ))
199+ require .Contains (t , out , fmt .Sprintf ("Holocene: @ %d ~ " , h ))
200+ require .Contains (t , out , fmt .Sprintf ("Isthmus: @ %d ~ " , i ))
201+ require .Contains (t , out , fmt .Sprintf ("Interop: @ %d ~ " , it ))
202+ })
203+ t .Run ("holocene & isthmus date" , func (t * testing.T ) {
173204 config := randConfig ()
174205 x := uint64 (1677119335 )
175206 config .RegolithTime = & x
@@ -250,6 +281,15 @@ func TestActivations(t *testing.T) {
250281 return c .IsHolocene (t )
251282 },
252283 },
284+ {
285+ name : "Isthmus" ,
286+ setUpgradeTime : func (t * uint64 , c * Config ) {
287+ c .IsthmusTime = t
288+ },
289+ checkEnabled : func (t uint64 , c * Config ) bool {
290+ return c .IsIsthmus (t )
291+ },
292+ },
253293 {
254294 name : "Interop" ,
255295 setUpgradeTime : func (t * uint64 , c * Config ) {
@@ -518,10 +558,20 @@ func TestConfig_Check(t *testing.T) {
518558 canyonTime := uint64 (2 )
519559 deltaTime := uint64 (3 )
520560 ecotoneTime := uint64 (4 )
561+ fjordTime := uint64 (5 )
562+ graniteTime := uint64 (6 )
563+ holoceneTime := uint64 (7 )
564+ isthmusTime := uint64 (8 )
565+ interopTime := uint64 (9 )
521566 cfg .RegolithTime = & regolithTime
522567 cfg .CanyonTime = & canyonTime
523568 cfg .DeltaTime = & deltaTime
524569 cfg .EcotoneTime = & ecotoneTime
570+ cfg .FjordTime = & fjordTime
571+ cfg .GraniteTime = & graniteTime
572+ cfg .HoloceneTime = & holoceneTime
573+ cfg .IsthmusTime = & isthmusTime
574+ cfg .InteropTime = & interopTime
525575 },
526576 expectedErr : nil ,
527577 },
@@ -717,3 +767,37 @@ func TestConfig_IsActivationBlock(t *testing.T) {
717767 require .Zero (t , cfg .IsActivationBlock (ts , ts + 1 ))
718768 }
719769}
770+
771+ func TestConfigImplementsBlockType (t * testing.T ) {
772+ config := randConfig ()
773+ isthmusTime := uint64 (100 )
774+ config .IsthmusTime = & isthmusTime
775+ tests := []struct {
776+ name string
777+ blockTime uint64
778+ hasOptimismWithdrawalsRoot bool
779+ }{
780+ {
781+ name : "BeforeIsthmus" ,
782+ blockTime : uint64 (99 ),
783+ hasOptimismWithdrawalsRoot : false ,
784+ },
785+ {
786+ name : "AtIsthmus" ,
787+ blockTime : uint64 (100 ),
788+ hasOptimismWithdrawalsRoot : true ,
789+ },
790+ {
791+ name : "AfterIsthmus" ,
792+ blockTime : uint64 (200 ),
793+ hasOptimismWithdrawalsRoot : true ,
794+ },
795+ }
796+
797+ for _ , test := range tests {
798+ test := test
799+ t .Run (fmt .Sprintf ("TestHasOptimismWithdrawalsRoot_%s" , test .name ), func (t * testing.T ) {
800+ assert .Equal (t , config .HasOptimismWithdrawalsRoot (test .blockTime ), test .hasOptimismWithdrawalsRoot )
801+ })
802+ }
803+ }
0 commit comments