@@ -30,6 +30,9 @@ func TestWriterNoGap(t *testing.T) {
3030 ngw := NewWriterNoGap [int ](w )
3131 require .NotNil (t , w )
3232
33+ err = ngw .Write (context .Background (), Block [int ]{Number : 0 })
34+ require .NoError (t , err )
35+
3336 err = ngw .Write (context .Background (), Block [int ]{Number : 1 })
3437 require .NoError (t , err )
3538
@@ -46,7 +49,7 @@ func TestWriterNoGap(t *testing.T) {
4649 require .NoError (t , err )
4750
4851 walData , err := os .ReadFile (
49- path .Join (buildETHWALPath (opt .Dataset .Name , opt .Dataset .Version , opt .Dataset .Path ), (& File {FirstBlockNum : 1 , LastBlockNum : 3 }).Path ()),
52+ path .Join (buildETHWALPath (opt .Dataset .Name , opt .Dataset .Version , opt .Dataset .Path ), (& File {FirstBlockNum : 0 , LastBlockNum : 3 }).Path ()),
5053 )
5154 require .NoError (t , err )
5255
@@ -59,7 +62,57 @@ func TestWriterNoGap(t *testing.T) {
5962 blockCount ++
6063 }
6164
62- require .Equal (t , 3 , blockCount )
65+ require .Equal (t , 4 , blockCount )
66+ })
67+
68+ t .Run ("gap_first_block" , func (t * testing.T ) {
69+ defer testTeardown (t )
70+
71+ opt := Options {
72+ Dataset : Dataset {
73+ Name : "int-wal" ,
74+ Path : testPath ,
75+ Version : defaultDatasetVersion ,
76+ },
77+ NewEncoder : NewJSONEncoder ,
78+ }.WithDefaults ()
79+
80+ w , err := NewWriter [int ](opt )
81+ require .NoError (t , err )
82+
83+ ngw := NewWriterNoGap [int ](w )
84+ require .NotNil (t , w )
85+
86+ err = ngw .Write (context .Background (), Block [int ]{Number : 1 })
87+ require .NoError (t , err )
88+
89+ err = ngw .Write (context .Background (), Block [int ]{Number : 2 })
90+ require .NoError (t , err )
91+
92+ err = ngw .Write (context .Background (), Block [int ]{Number : 3 })
93+ require .NoError (t , err )
94+
95+ err = (w .(* writer [int ])).rollFile (context .Background ())
96+ require .NoError (t , err )
97+
98+ err = ngw .Close (context .Background ())
99+ require .NoError (t , err )
100+
101+ walData , err := os .ReadFile (
102+ path .Join (buildETHWALPath (opt .Dataset .Name , opt .Dataset .Version , opt .Dataset .Path ), (& File {FirstBlockNum : 0 , LastBlockNum : 3 }).Path ()),
103+ )
104+ require .NoError (t , err )
105+
106+ d := NewJSONDecoder (bytes .NewBuffer (walData ))
107+
108+ var b Block [int ]
109+ var blockCount int
110+ for d .Decode (& b ) != io .EOF {
111+ require .NoError (t , err )
112+ blockCount ++
113+ }
114+
115+ require .Equal (t , 4 , blockCount )
63116 })
64117
65118 t .Run ("gap_3_10" , func (t * testing.T ) {
@@ -80,6 +133,9 @@ func TestWriterNoGap(t *testing.T) {
80133 ngw := NewWriterNoGap [int ](w )
81134 require .NotNil (t , w )
82135
136+ err = ngw .Write (context .Background (), Block [int ]{Number : 0 })
137+ require .NoError (t , err )
138+
83139 err = ngw .Write (context .Background (), Block [int ]{Number : 1 })
84140 require .NoError (t , err )
85141
@@ -98,7 +154,7 @@ func TestWriterNoGap(t *testing.T) {
98154 require .NoError (t , err )
99155
100156 walData , err := os .ReadFile (
101- path .Join (buildETHWALPath (opt .Dataset .Name , opt .Dataset .Version , opt .Dataset .Path ), (& File {FirstBlockNum : 1 , LastBlockNum : 10 }).Path ()),
157+ path .Join (buildETHWALPath (opt .Dataset .Name , opt .Dataset .Version , opt .Dataset .Path ), (& File {FirstBlockNum : 0 , LastBlockNum : 10 }).Path ()),
102158 )
103159 require .NoError (t , err )
104160
@@ -111,6 +167,6 @@ func TestWriterNoGap(t *testing.T) {
111167 blockCount ++
112168 }
113169
114- require .Equal (t , 10 , blockCount )
170+ require .Equal (t , 11 , blockCount )
115171 })
116172}
0 commit comments