Can initialize not empty.
MODIFY
WalletWasabi.Tests/UnitTests/Transactions/AllTransactionStoreTests.cs
WalletWasabi.Tests/UnitTests/Transactions/AllTransactionStoreTests.cs
@@ -2,6 +2,7 @@ using NBitcoin;
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
@@ -15,7 +16,7 @@ namespace WalletWasabi.Tests.UnitTests.Transactions
{
[Theory]
[MemberData(nameof(GetDifferentNetworkValues))]
- public async Task CanInitializeAsync(Network network)
+ public async Task CanInitializeEmptyAsync(Network network)
{
var txStore = new AllTransactionStore();
await txStore.InitializeAsync(PrepareWorkDir(), network, ensureBackwardsCompatibility: false);
@@ -46,6 +47,46 @@ namespace WalletWasabi.Tests.UnitTests.Transactions
Assert.Empty(txContent);
}
+ [Fact]
+ public async Task CanInitializeAsync()
+ {
+ string dir = PrepareWorkDir();
+ var network = Network.TestNet;
+ var mempoolFile = Path.Combine(dir, "Mempool", "Transactions.dat");
+ var txFile = Path.Combine(dir, "ConfirmedTransactions", "Transactions.dat");
+ IoHelpers.EnsureContainingDirectoryExists(mempoolFile);
+ IoHelpers.EnsureContainingDirectoryExists(txFile);
+ var mempoolFileContent = new[]
+ {
+ "34fc45781f2ac8e541b6045c2858c755dd2ab85e0ea7b5778b4d0cc191468571:01000000000102d5ae6e2612cdf8932d0e4f684d8ad9afdbca0afffba5c3dc0bf85f2b661bfb670000000000ffffffffbfd117908d5ba536624630519aaea7419605efa33bf1cb50c5ff7441f7b27a5b0100000000ffffffff01c6473d0000000000160014f9d25fe27812c3d35ad3819fcab8b95098effe15024730440220165730f8275434a5484b6aba3c71338a109b7cfd7380fdc18c6791a6afba9dee0220633b3b65313e57bdbd491d17232e6702912869d81461b4c939600d1cc99c06ec012102667c9fb272660cd6c06f853314b53c41da851f86024f9475ff15ea0636f564130247304402205e81562139231274cd7f705772c2810e34b7a291bd9882e6c567553babca9c7402206554ebd60d62a605a27bd4bf6482a533dd8dd35b12dc9d6abfa21738fdf7b57a012102b25dec5439a1aad8d901953a90d16252514a55f547fe2b85bc12e3f72cff1c4b00000000:Mempool::0::1570464578:False",
+ "b5cd5b4431891d913a6fbc0e946798b6f730c8b97f95a5c730c24189bed24ce7:01000000010113145dd6264da43406a0819b6e2d791ec9281322f33944ef034c3307f38c330000000000ffffffff0220a10700000000001600149af662cf9564700b93bd46fac8b51f64f2adad2343a5070000000000160014f1938902267eac1ae527128fe7773657d2b757b900000000:Mempool::0::1555590391:False",
+ "89e6788e63c5966fae0ccf6e85665ec62754f982b9593d7e3c4b78ac0e93208d:01000000000101f3e7c1bce1e0566800d8e6cae8f0d771a2ace8939cc6be7c8c21b05e590969530000000000ffffffff01cc2b0f0000000000160014e0ff6f42032bbfda63fabe0832b4ccb7be7350ae024730440220791e34413957c0f8348718d5d767f660657faf241801e74b5b81ac69e8912f60022041f3e9aeca137044565e1a81b6bcca74a88166436e5fa5f0e390448ac18fa5900121034dc07f3c26734591eb97f7e112888c3198d62bc3718106cba5a5688c62485b4500000000:Mempool::0::1555590448:False",
+ };
+ var txFileContent = new[]
+ {
+ "95374c1037eb5268c8ae6681eb26756459d19754d41b660c251e6f62df586d29:0100000001357852bdf4e75a4ee2afe213463ff8afbed977ea5459a310777322504254ffdf0100000000ffffffff0240420f0000000000160014dc992214c430bf306fe446e9bac1dfc4ad4d3ee368cc100300000000160014005340d370675c47f7a04eb186200dd98c3d463c00000000:1580176:0000000034522ee38f074e1f4330b9c2f20c6a2b9a96de6f474a5f5f8fa76e2b:307::1569940579:False",
+ "af73b4c173da1bd24063e35a755babfa40728a282d6f56eeef4ce5a81ab26ee7:01000000013c81d2dcb25ad36781d1a6f9faa68f4a8b927f40e0b4e4b6184bb4761ebfc0dd0000000000ffffffff016f052e0000000000160014ae6e31ee9dae103f50979f761c2f9b44661da24f00000000:1580176:0000000034522ee38f074e1f4330b9c2f20c6a2b9a96de6f474a5f5f8fa76e2b:346::1569940633:False",
+ "ebcef423f6b03ef89dce076b53e624c966381f76e5d8b2b5034d3615ae950b2f:01000000000101296d58df626f1e250c661bd45497d159647526eb8166aec86852eb37104c37950100000000ffffffff01facb100300000000160014d5461e0e7077d62c4cf9c18a4e9ba10efd4930340247304402206d2c5b2b182474531ed07587e44ea22b136a37d5ddbd35aa2d984da7be5f7e5202202abd8435d9856e3d0892dbd54e9c05f2a20d9d5f333247314b925947a480a2eb01210321dd0574c773a35d4a7ebf17bf8f974b5665c0183598f1db53153e74c876768500000000:1580673:0000000017b09a77b815f3df513ff698d1f3b0e8c5e16ac0d6558e2d831f3bf9:130::1570462988:False",
+ };
+ await File.WriteAllLinesAsync(mempoolFile, mempoolFileContent);
+ await File.WriteAllLinesAsync(txFile, txFileContent);
+
+ var txStore = new AllTransactionStore();
+ await txStore.InitializeAsync(dir, network, ensureBackwardsCompatibility: false);
+
+ Assert.Equal(6, txStore.GetTransactions().Count());
+ Assert.Equal(6, txStore.GetTransactionHashes().Count());
+ Assert.Equal(3, txStore.MempoolStore.GetTransactions().Count());
+ Assert.Equal(3, txStore.MempoolStore.GetTransactionHashes().Count());
+ Assert.Equal(3, txStore.ConfirmedStore.GetTransactions().Count());
+ Assert.Equal(3, txStore.ConfirmedStore.GetTransactionHashes().Count());
+ Assert.False(txStore.IsEmpty());
+
+ uint256 doesntContainTxHash = Global.GenerateRandomSmartTransaction().GetHash();
+ Assert.False(txStore.Contains(doesntContainTxHash));
+ Assert.False(txStore.TryGetTransaction(doesntContainTxHash, out _));
+ }
+
[Theory]
[MemberData(nameof(GetDifferentNetworkValues))]
public async Task DoesntUpdateAsync(Network network)

Can initialize not empty.