예제 #1
0
        public void Put_PutNullValue_ThrowException()
        {
            // Arrange
            Wallet.Wallet wallet = new Wallet.Wallet();

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() => wallet.Put(null));
        }
예제 #2
0
    private void Awake()
    {
        if (Instance != this)
        {
            Instance = this;
        }

        CurrentWallet = Wallet.Wallet.CreateWallet(null);
    }
예제 #3
0
        public void Put_PutMoney_MoneyPutted()
        {
            // Arrange
            decimal  expectedAmount   = new Random().Next(1, int.MaxValue);
            Currency expectedCurrency = Currency.AED;
            Money    money            = new Money(expectedAmount, expectedCurrency);

            Wallet.Wallet wallet = new Wallet.Wallet();

            // Act
            wallet.Put(money);

            // Assert
            Assert.IsNotNull(wallet.Monies);
            Assert.IsTrue(wallet.Monies.Contains(money));
        }
예제 #4
0
        public void SumWithMapReduce_PutOneMoney_SumEqualToMoneyAmount()
        {
            // Arrange
            decimal  expectedAmount   = new Random().Next(1, int.MaxValue);
            Currency expectedCurrency = Currency.AED;
            Money    money            = new Money(expectedAmount, expectedCurrency);

            Wallet.Wallet wallet = new Wallet.Wallet();
            wallet.Put(money);

            // Act
            Money actual = wallet.SumWithMapReduce(expectedCurrency);

            // Assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedCurrency, actual.Currency);
            Assert.IsTrue(actual.Amount > 0);
            Assert.AreEqual(expectedAmount, actual.Amount);
        }
예제 #5
0
        public void SumWithMapReduce_PutMoniesWithSameCurrency_SumEqualToMonies()
        {
            // Arrange
            decimal  firstAmount      = new Random().Next(1, int.MaxValue);
            decimal  secondAmount     = new Random().Next(1, int.MaxValue);
            Currency expectedCurrency = Currency.AED;
            Money    firstMoney       = new Money(firstAmount, expectedCurrency);
            Money    secondMoney      = new Money(secondAmount, expectedCurrency);

            Wallet.Wallet wallet = new Wallet.Wallet();
            wallet.Put(firstMoney);
            wallet.Put(secondMoney);

            // Act
            Money actual = wallet.SumWithMapReduce(expectedCurrency);

            // Assert
            Assert.IsNotNull(actual);
            Assert.AreEqual(expectedCurrency, actual.Currency);
            Assert.IsTrue(actual.Amount > 0);
            Assert.AreEqual(firstAmount + secondAmount, actual.Amount);
        }
예제 #6
0
        public void Put_PutMoniesDifferentsCurrencies_MoniesPutted()
        {
            // Arrange
            decimal  expectedFirstAmount    = new Random().Next(1, int.MaxValue);
            Currency expectedFirstCurrency  = Currency.AED;
            Money    firstMoney             = new Money(expectedFirstAmount, expectedFirstCurrency);
            decimal  expectedSecondAmount   = new Random().Next(1, int.MaxValue);
            Currency expectedSecondCurrency = Currency.AFN;
            Money    secondMoney            = new Money(expectedSecondAmount, expectedSecondCurrency);

            Wallet.Wallet wallet = new Wallet.Wallet();

            // Act
            wallet.Put(firstMoney);
            wallet.Put(secondMoney);

            // Assert
            Assert.IsNotNull(wallet.Monies);
            Assert.AreEqual(2, wallet.Monies.Count);
            Assert.IsTrue(wallet.Monies.Contains(firstMoney));
            Assert.IsTrue(wallet.Monies.Contains(secondMoney));
        }
예제 #7
0
        static void Main(string[] args)
        {
            Wallet.Wallet wallet = new Wallet.Wallet();

            // Put random monies in wallet.
            for (int counter = 0; counter < 1000000; counter++)
            {
                wallet.Put(new Money(GetRandomAmout(), GetRandomCurrency()));
            }

            // Stopwatch with mapreduce.
            Stopwatch watch = new Stopwatch();

            watch.Start();
            Money money = wallet.SumWithMapReduce(Currency.EUR);

            watch.Stop();

            // Stopwatch without mapreduce
            Stopwatch watch2 = new Stopwatch();

            watch2.Start();
            Money money2 = wallet.Sum(Currency.EUR);

            watch2.Stop();

            Console.WriteLine($"Sum with MapReduce");
            Console.WriteLine($"{money.Amount}{money.Currency}");
            Console.WriteLine($"{watch.Elapsed.Minutes} Minutes. {watch.Elapsed.Seconds} Seconds. {watch.Elapsed.Milliseconds} Milliseconds.");

            Console.WriteLine($"Sum without MapReduce");
            Console.WriteLine($"{money2.Amount}{money2.Currency}");
            Console.WriteLine($"{watch2.Elapsed.Minutes} Minutes. {watch2.Elapsed.Seconds} Seconds. {watch2.Elapsed.Milliseconds} Milliseconds.");

            Console.ReadKey();
        }