public void PoolItem_CompareTo_Hash()
        {
            int sizeFixed          = 51;
            int netFeeSatoshiFixed = 1;

            var tx1 = GenerateTxWithFirstByteOfHashGreaterThanOrEqualTo(0x80, netFeeSatoshiFixed, sizeFixed);
            var tx2 = GenerateTxWithFirstByteOfHashLessThanOrEqualTo(0x79, netFeeSatoshiFixed, sizeFixed);

            tx1.Attributes = new TransactionAttribute[] { new HighPriorityAttribute() };

            PoolItem pitem1 = new PoolItem(tx1);
            PoolItem pitem2 = new PoolItem(tx2);

            // Different priority
            pitem2.CompareTo(pitem1).Should().Be(-1);

            // Bulk test
            for (int testRuns = 0; testRuns < 30; testRuns++)
            {
                tx1 = GenerateTxWithFirstByteOfHashGreaterThanOrEqualTo(0x80, netFeeSatoshiFixed, sizeFixed);
                tx2 = GenerateTxWithFirstByteOfHashLessThanOrEqualTo(0x79, netFeeSatoshiFixed, sizeFixed);

                pitem1 = new PoolItem(tx1);
                pitem2 = new PoolItem(tx2);

                pitem2.CompareTo((Transaction)null).Should().Be(1);

                // pitem2.tx.Hash < pitem1.tx.Hash => 1 descending order
                pitem2.CompareTo(pitem1).Should().Be(1);

                // pitem2.tx.Hash > pitem1.tx.Hash => -1 descending order
                pitem1.CompareTo(pitem2).Should().Be(-1);
            }
        }
        public void PoolItem_CompareTo_Equals()
        {
            int sizeFixed          = 500;
            int netFeeSatoshiFixed = 10;
            var tx = GenerateTx(netFeeSatoshiFixed, sizeFixed, new byte[] { 0x13, 0x37 });

            PoolItem pitem1 = new PoolItem(tx);
            PoolItem pitem2 = new PoolItem(tx);

            // pitem1 == pitem2 (fee) => 0
            pitem1.CompareTo(pitem2).Should().Be(0);
            pitem2.CompareTo(pitem1).Should().Be(0);
            pitem2.CompareTo((PoolItem)null).Should().Be(1);
        }
Exemple #3
0
        public void PoolItem_CompareTo_Hash()
        {
            int sizeFixed          = 50;
            int netFeeSatoshiFixed = 1;

            for (int testRuns = 0; testRuns < 30; testRuns++)
            {
                var tx1 = GenerateMockTxWithFirstByteOfHashGreaterThanOrEqualTo(0x80, new Fixed8(netFeeSatoshiFixed), sizeFixed);
                var tx2 = GenerateMockTxWithFirstByteOfHashLessThanOrEqualTo(0x79, new Fixed8(netFeeSatoshiFixed), sizeFixed);

                PoolItem pitem1 = new PoolItem(tx1.Object);
                PoolItem pitem2 = new PoolItem(tx2.Object);

                // pitem2 < pitem1 (fee) => -1
                pitem2.CompareTo(pitem1).Should().Be(-1);

                // pitem1 > pitem2  (fee) => 1
                pitem1.CompareTo(pitem2).Should().Be(1);
            }

            // equal hashes should be equal
            var      tx3    = MockGenerateInvocationTx(new Fixed8(netFeeSatoshiFixed), sizeFixed, new byte[] { 0x13, 0x37 });
            var      tx4    = MockGenerateInvocationTx(new Fixed8(netFeeSatoshiFixed), sizeFixed, new byte[] { 0x13, 0x37 });
            PoolItem pitem3 = new PoolItem(tx3.Object);
            PoolItem pitem4 = new PoolItem(tx4.Object);

            pitem3.CompareTo(pitem4).Should().Be(0);
            pitem4.CompareTo(pitem3).Should().Be(0);
        }
Exemple #4
0
        public void PoolItem_CompareTo_ClaimTx()
        {
            var tx1 = GenerateClaimTx();
            // Non-free low-priority transaction
            var tx2 = MockGenerateInvocationTx(new Fixed8(99999), 50).Object;

            var poolItem1 = new PoolItem(tx1);
            var poolItem2 = new PoolItem(tx2);

            poolItem1.CompareTo(poolItem2).Should().Be(1);
            poolItem2.CompareTo(poolItem1).Should().Be(-1);
        }
Exemple #5
0
        public void PoolItem_CompareTo_Equals()
        {
            int sizeFixed          = 500;
            int netFeeSatoshiFixed = 10;
            var tx = GenerateTx(netFeeSatoshiFixed, sizeFixed, new byte[] { 0x13, 0x37 });

            PoolItem pitem1 = new PoolItem(tx);
            PoolItem pitem2 = new PoolItem(tx);

            // pitem1 == pitem2 (fee) => 0
            AssertionExtensions.Should((int)pitem1.CompareTo(pitem2)).Be(0);
            AssertionExtensions.Should((int)pitem2.CompareTo(pitem1)).Be(0);
        }
Exemple #6
0
        public void PoolItem_CompareTo_Equals()
        {
            int sizeFixed          = 500;
            int netFeeSatoshiFixed = 10;
            var tx1 = MockGenerateInvocationTx(new Fixed8(netFeeSatoshiFixed), sizeFixed, new byte[] { 0x13, 0x37 });
            var tx2 = MockGenerateInvocationTx(new Fixed8(netFeeSatoshiFixed), sizeFixed, new byte[] { 0x13, 0x37 });

            PoolItem pitem1 = new PoolItem(tx1.Object);
            PoolItem pitem2 = new PoolItem(tx2.Object);

            // pitem1 == pitem2 (fee) => 0
            pitem1.CompareTo(pitem2).Should().Be(0);
            pitem2.CompareTo(pitem1).Should().Be(0);
        }
Exemple #7
0
        public void PoolItem_CompareTo_Fee()
        {
            int size1          = 50;
            int netFeeSatoshi1 = 1;
            var tx1            = MockGenerateInvocationTx(new Fixed8(netFeeSatoshi1), size1);
            int size2          = 50;
            int netFeeSatoshi2 = 2;
            var tx2            = MockGenerateInvocationTx(new Fixed8(netFeeSatoshi2), size2);

            PoolItem pitem1 = new PoolItem(tx1.Object);
            PoolItem pitem2 = new PoolItem(tx2.Object);

            Console.WriteLine($"item1 time {pitem1.Timestamp} item2 time {pitem2.Timestamp}");
            // pitem1 < pitem2 (fee) => -1
            pitem1.CompareTo(pitem2).Should().Be(-1);
            // pitem2 > pitem1 (fee) => 1
            pitem2.CompareTo(pitem1).Should().Be(1);
        }
Exemple #8
0
        public void PoolItem_CompareTo_Fee()
        {
            int size1          = 50;
            int netFeeSatoshi1 = 1;
            var tx1            = GenerateTx(netFeeSatoshi1, size1);
            int size2          = 50;
            int netFeeSatoshi2 = 2;
            var tx2            = GenerateTx(netFeeSatoshi2, size2);

            PoolItem pitem1 = new PoolItem(tx1);
            PoolItem pitem2 = new PoolItem(tx2);

            Console.WriteLine($"item1 time {pitem1.Timestamp} item2 time {pitem2.Timestamp}");
            // pitem1 < pitem2 (fee) => -1
            pitem1.CompareTo(pitem2).Should().Be(-1);
            // pitem2 > pitem1 (fee) => 1
            pitem2.CompareTo(pitem1).Should().Be(1);
        }
Exemple #9
0
        public void PoolItem_CompareTo_Hash()
        {
            int sizeFixed          = 50;
            int netFeeSatoshiFixed = 1;

            for (int testRuns = 0; testRuns < 30; testRuns++)
            {
                var tx1 = GenerateTxWithFirstByteOfHashGreaterThanOrEqualTo(0x80, netFeeSatoshiFixed, sizeFixed);
                var tx2 = GenerateTxWithFirstByteOfHashLessThanOrEqualTo(0x79, netFeeSatoshiFixed, sizeFixed);

                PoolItem pitem1 = new PoolItem(tx1);
                PoolItem pitem2 = new PoolItem(tx2);

                // pitem2 < pitem1 (fee) => -1
                pitem2.CompareTo(pitem1).Should().Be(-1);

                // pitem1 > pitem2  (fee) => 1
                pitem1.CompareTo(pitem2).Should().Be(1);
            }
        }