public void SeedTest()
        {
            // Arrange
            int seed1 = 1337;
            int seed2 = 13370;

            int rounds = 100;

            BitcoinAddressGenerator bag1 = new BitcoinAddressGenerator();
            BitcoinAddressGenerator bag2 = new BitcoinAddressGenerator();

            List <object> gene1Objects = new List <object>(capacity: rounds);
            List <object> gene2Objects = new List <object>(capacity: rounds);

            // Act
            var shouldBeValidInitResult1 = bag1.Init(null, seed1);
            var shouldBeValidInitResult2 = bag2.Init(null, seed2);

            for (int i = 0; i < rounds; i++)
            {
                var genResult1 = bag1.Generate();
                var genResult2 = bag2.Generate();

                gene1Objects.Add(genResult1.result);
                gene2Objects.Add(genResult2.result);

                bag1.NextStep();
                bag2.NextStep();
            }

            CollectionAssert.AreNotEqual(gene1Objects, gene2Objects);
        }
        public void SaveTest()
        {
            // Arrange
            int seed = 1337;

            BitcoinAddressGenerator bag1 = new BitcoinAddressGenerator();

            // Act
            var    shouldBeValidInitResult1 = bag1.Init(null, seed);
            string bg1String = bag1.Save();

            // Assert
            Assert.IsTrue(shouldBeValidInitResult1.success);

            Assert.AreEqual($"~~{seed}", bg1String, "Default Init should store seed");
        }
Ejemplo n.º 3
0
        private static void GenerateAddress(CoinType coinType)
        {
            BitcoinAddressGenerator addressGenerator = new BitcoinAddressGenerator();
            AddressInfo             addressInfo      = addressGenerator.GenerateAddress(coinType);

            Console.Write("Generating new address");
            FakeProgress();
            Console.WriteLine();

            Console.WriteLine($"Private Key (hex): {addressInfo.PrivateKeyHex}");
            Console.WriteLine($"Private Key (wif): {addressInfo.PrivateKeyWif}");
            Console.WriteLine($"Public Key  (hex): {addressInfo.PublicKeyHex}");
            Console.WriteLine($"Public Key (hash): {addressInfo.PublicKeyHash}");
            Console.WriteLine();
            Console.WriteLine("=========================================================");
            Console.WriteLine($"| Address ({addressInfo.CoinType:G}): {addressInfo.Address} |");
            Console.WriteLine("=========================================================");
            Console.WriteLine();
        }
        public void InitTest()
        {
            // Arrange
            object valid1 = null;

            object invalid1 = new object();

            int seed = 1337;

            BitcoinAddressGenerator bag1 = new BitcoinAddressGenerator();
            BitcoinAddressGenerator bag2 = new BitcoinAddressGenerator();

            // Act
            var shouldBeValidResult1 = bag1.Init(valid1, seed);

            var shouldBeInvalidResult1 = bag2.Init(invalid1, seed);

            // Assert
            Assert.IsTrue(shouldBeValidResult1.success, "Init should have been successful");

            Assert.IsFalse(shouldBeInvalidResult1.success, "Init should have failed");
        }
        public void RandomGenerateTest()
        {
            // Arrange
            object parameter = null;

            int seed = 1337;

            int loopCount = 100;

            BitcoinAddressGenerator bag = new BitcoinAddressGenerator();

            List <string> btcAddresses = new List <string>();
            List <bool>   successList  = new List <bool>();

            // Act
            var shouldBeValidResult = bag.Init(parameter, seed);
            var generated1          = bag.Generate(parameter);
            var generated2          = bag.Generate(parameter);    // Same step should provide same result

            for (int i = 0; i < loopCount; i++)
            {
                bag.NextStep();
                var generateResult = bag.Generate(parameter: null, wantedOutput: null);
                successList.Add(generateResult.success);
                btcAddresses.Add((string)generateResult.result);
            }

            // Assert
            Assert.IsTrue(shouldBeValidResult.success, "Init should have been successful");

            Assert.AreEqual(generated1.result, generated2.result, "Both generates should have same results since NextStep has not been called between them");

            CollectionAssert.DoesNotContain(successList, false, "All generates should have been successful");
            CollectionAssert.AllItemsAreUnique(btcAddresses, "Generated addresses should be unique");

            Assert.AreEqual("17KwqxxCPJJHk3q1tws1Tsx7jTS7", (string)generated1.result, "With chosen seed first address should always be 17KwqxxCPJJHk3q1tws1Tsx7jTS7");
        }
        public void LoadTest()
        {
            // Arrange
            int seed = 13237;

            string loadString = $"~~{seed}";

            BitcoinAddressGenerator bag1 = new BitcoinAddressGenerator();
            BitcoinAddressGenerator bag2 = new BitcoinAddressGenerator();
            BitcoinAddressGenerator bag3 = new BitcoinAddressGenerator();

            List <string> results1 = new List <string>();
            List <string> results2 = new List <string>();
            List <string> results3 = new List <string>();

            // Act
            var shouldBeValidInitResult1 = bag1.Init(null, seed);
            var shouldBeValidInitResult2 = bag3.Init(null, 0);

            var shouldBeValidLoadResult = bag2.Load(loadString);

            for (int i = 0; i < 13; i++)
            {
                results1.Add((string)bag1.Generate().result);
                results2.Add((string)bag2.Generate().result);
                results3.Add((string)bag3.Generate().result);
            }

            // Assert
            Assert.IsTrue(shouldBeValidInitResult1.success);
            Assert.IsTrue(shouldBeValidInitResult2.success);
            Assert.IsTrue(shouldBeValidLoadResult.success);

            CollectionAssert.AreEqual(results1, results2);
            CollectionAssert.AreNotEqual(results1, results3);
        }