BitSharp.Core.Test.Storage.IChainStateCursorTest.TestTryAddGetRemoveUnspentTxOutput C# (CSharp) Method

TestTryAddGetRemoveUnspentTxOutput() private method

private TestTryAddGetRemoveUnspentTxOutput ( ITestStorageProvider provider ) : void
provider ITestStorageProvider
return void
        private void TestTryAddGetRemoveUnspentTxOutput(ITestStorageProvider provider)
        {
            var random = new Random();

            var txOutput0Key = new TxOutputKey(UInt256.Zero, 0);
            var txOutput0 = new TxOutput(0, random.NextBytes(100).ToImmutableArray());
            var txOutput1Key = new TxOutputKey(UInt256.One, 1);
            var txOutput1 = new TxOutput(1, random.NextBytes(100).ToImmutableArray());

            using (var storageManager = provider.OpenStorageManager())
            using (var handle = storageManager.OpenChainStateCursor())
            {
                var chainStateCursor = handle.Item;

                // begin transaction
                chainStateCursor.BeginTransaction();

                // verify initial empty state
                TxOutput actualTxOutput0, actualTxOutput1;
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput0Key, out actualTxOutput0));
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput1Key, out actualTxOutput1));

                // add unspent tx 0
                Assert.IsTrue(chainStateCursor.TryAddUnspentTxOutput(txOutput0Key, txOutput0));

                // verify unspent txes
                Assert.IsTrue(chainStateCursor.TryGetUnspentTxOutput(txOutput0Key, out actualTxOutput0));
                Assert.AreEqual(txOutput0, actualTxOutput0);
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput1Key, out actualTxOutput1));

                // add unspent tx 1
                Assert.IsTrue(chainStateCursor.TryAddUnspentTxOutput(txOutput1Key, txOutput1));

                // verify unspent txes
                Assert.IsTrue(chainStateCursor.TryGetUnspentTxOutput(txOutput0Key, out actualTxOutput0));
                Assert.AreEqual(txOutput0, actualTxOutput0);
                Assert.IsTrue(chainStateCursor.TryGetUnspentTxOutput(txOutput1Key, out actualTxOutput1));
                Assert.AreEqual(txOutput1, actualTxOutput1);

                // remove unspent tx 1
                Assert.IsTrue(chainStateCursor.TryRemoveUnspentTxOutput(txOutput1Key));

                // verify unspent txes
                Assert.IsTrue(chainStateCursor.TryGetUnspentTxOutput(txOutput0Key, out actualTxOutput0));
                Assert.AreEqual(txOutput0, actualTxOutput0);
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput1Key, out actualTxOutput1));

                // remove unspent tx 0
                Assert.IsTrue(chainStateCursor.TryRemoveUnspentTxOutput(txOutput0Key));

                // verify unspent txes
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput0Key, out actualTxOutput0));
                Assert.IsFalse(chainStateCursor.TryGetUnspentTxOutput(txOutput1Key, out actualTxOutput1));
            }
        }

Same methods

IChainStateCursorTest::TestTryAddGetRemoveUnspentTxOutput ( ) : void