@@ -14,6 +14,7 @@ import pkg/codex/bittorrent/manifest
1414import pkg/ codex/ bittorrent/ torrentdownloader
1515
1616import pkg/ codex/ utils/ iter
17+ import pkg/ codex/ utils/ safeasynciter
1718import pkg/ codex/ logutils
1819
1920import ../../ asynctest
@@ -208,6 +209,47 @@ asyncchecksuite "Torrent Downloader":
208209 check blockIter.finished
209210 await torrentDownloader.stop ()
210211
212+ test " get downloaded blocks using async iter" :
213+ torrentDownloader.start ()
214+
215+ let blockIter = Iter .new (0 ..< codexManifest.blocksCount)
216+
217+ for dataFut in torrentDownloader.getAsyncBlockIterator ():
218+ let status = await dataFut.withTimeout (1 .seconds)
219+ assert status == true
220+ let (blockIndex, data) = (await dataFut).tryGet ()
221+ trace " got data" , blockIndex, len = data.len
222+ let expectedBlockIndex = blockIter.next ()
223+ check blockIndex == expectedBlockIndex
224+ let treeCid = codexManifest.treeCid
225+ let address = BlockAddress .init (treeCid, expectedBlockIndex)
226+ let blk = (await localStore.getBlock (address)).tryGet ()
227+ check blk.data == data
228+
229+ check blockIter.finished
230+ await torrentDownloader.stop ()
231+
232+ test " get downloaded blocks using async pairs iter" :
233+ torrentDownloader.start ()
234+
235+ let blockIter = Iter .new (0 ..< codexManifest.blocksCount)
236+
237+ for i, dataFut in torrentDownloader.getAsyncBlockIterator ():
238+ let status = await dataFut.withTimeout (1 .seconds)
239+ assert status == true
240+ let (blockIndex, data) = (await dataFut).tryGet ()
241+ trace " got data" , blockIndex, len = data.len
242+ let expectedBlockIndex = blockIter.next ()
243+ check i == expectedBlockIndex
244+ check blockIndex == expectedBlockIndex
245+ let treeCid = codexManifest.treeCid
246+ let address = BlockAddress .init (treeCid, expectedBlockIndex)
247+ let blk = (await localStore.getBlock (address)).tryGet ()
248+ check blk.data == data
249+
250+ check blockIter.finished
251+ await torrentDownloader.stop ()
252+
211253 test " canceling download" :
212254 torrentDownloader.start ()
213255
0 commit comments