Exemplo n.º 1
0
        public void Balance_Subtract_Balance_SubtractsAllAmounts()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            // First balance

            Amount amount1 = new Amount(BigInt.FromInt(200), commodity1);
            Amount amount2 = new Amount(BigInt.FromInt(300), commodity2);

            Balance balance1 = new Balance();

            balance1.Add(amount1);
            balance1.Add(amount2);

            // Second balance

            Amount amount3 = new Amount(BigInt.FromInt(50), commodity1);
            Amount amount4 = new Amount(BigInt.FromInt(70), commodity2);

            Balance balance2 = new Balance();

            balance2.Add(amount3);
            balance2.Add(amount4);

            // Action

            balance1.Subtract(balance2);

            // Assert

            Assert.AreEqual(2, balance1.Amounts.Count());
            Assert.AreEqual(150, balance1.Amounts.ElementAt(0).Value.Quantity.ToLong());
            Assert.AreEqual(230, balance1.Amounts.ElementAt(1).Value.Quantity.ToLong());
        }
Exemplo n.º 2
0
        public void Balance_Constructor_ClonesAmounts()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Amount amount1 = new Amount(BigInt.FromInt(200), commodity1);
            Amount amount2 = new Amount(BigInt.FromInt(300), commodity2);

            Balance balance = new Balance();

            balance.Add(amount1);
            balance.Add(amount2);

            Balance clonedBalance = new Balance(balance);

            clonedBalance.Amounts.ElementAt(0).Value.Multiply(new Amount(5));
            clonedBalance.Amounts.ElementAt(1).Value.Multiply(new Amount(7));

            Assert.AreEqual(2, clonedBalance.Amounts.Count());
            Assert.AreEqual(1000, clonedBalance.Amounts.ElementAt(0).Value.Quantity.ToLong());
            Assert.AreEqual(2100, clonedBalance.Amounts.ElementAt(1).Value.Quantity.ToLong());

            Assert.AreEqual(2, balance.Amounts.Count());
            Assert.AreEqual(200, balance.Amounts.ElementAt(0).Value.Quantity.ToLong());
            Assert.AreEqual(300, balance.Amounts.ElementAt(1).Value.Quantity.ToLong());
        }
Exemplo n.º 3
0
        public void Balance_Add_Balance_AddsAllAmounts()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            // First balance

            Amount amount1 = new Amount(200, commodity1);
            Amount amount2 = new Amount(300, commodity2);

            Balance balance1 = new Balance();

            balance1.Add(amount1);
            balance1.Add(amount2);

            // Second balance

            Amount amount3 = new Amount(400, commodity1);
            Amount amount4 = new Amount(500, commodity2);

            Balance balance2 = new Balance();

            balance2.Add(amount3);
            balance2.Add(amount4);

            // Action

            balance1.Add(balance2);

            // Assert

            Assert.Equal(2, balance1.Amounts.Count());
            Assert.Equal(600, balance1.Amounts.ElementAt(0).Value.Quantity.ToLong());
            Assert.Equal(800, balance1.Amounts.ElementAt(1).Value.Quantity.ToLong());
        }
Exemplo n.º 4
0
        public void Balance_Add_IncorporatesAmountsWithTheSameCommodity()
        {
            Balance balance = new Balance();

            balance.Add(new Amount(1));
            balance.Add(new Amount(2));
            Assert.IsTrue(balance.IsSingleAmount);
            Assert.AreEqual(3, balance.SingleAmount.Quantity.ToLong());
        }
Exemplo n.º 5
0
        public void Balance_EqualsAmount_ReturnsFalseIfBalanceIsMultiAmount()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(20), commodity1));

            Assert.IsFalse(balance.Equals(new Amount(10)));
        }
Exemplo n.º 6
0
        public void Balance_EqualsAmount_ComparesSingleAmountWithAmount()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(20), commodity1));

            Assert.IsTrue(balance.Equals(new Amount(BigInt.FromLong(30), commodity1)));
        }
Exemplo n.º 7
0
        public void Balance_Multiply_RequiresNoCommoditiesForAmountIfBalanceIsMultiAmount()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(10, commodity1));
            balance.Add(new Amount(10, commodity2));

            Balance result = balance.Multiply(new Amount(10, commodity2));
        }
Exemplo n.º 8
0
        public void Balance_IsRealZero_IndicatesThatBalanceIsEmptyOrHasAllEmptyAmounts()
        {
            Balance balance = new Balance();

            Assert.IsTrue(balance.IsRealZero);

            balance.Add(new Amount(0));
            Assert.IsTrue(balance.IsRealZero);

            balance.Add(new Amount(1));
            Assert.IsFalse(balance.IsRealZero);
        }
Exemplo n.º 9
0
        public void Balance_ToString_CallsPrint()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("balToStrA"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("balToStrB"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.Parse("1.22"), commodity1));
            balance.Add(new Amount(BigInt.Parse("2.44"), commodity2));

            Assert.AreEqual("balToStrA1  \r\nbalToStrB2", balance.ToString());
        }
Exemplo n.º 10
0
        public void Balance_ToString_CallsPrint()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("balToStrA"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("balToStrB"));

            Balance balance = new Balance();

            balance.Add(new Amount(Quantity.Parse("1.22"), commodity1));
            balance.Add(new Amount(Quantity.Parse("2.44"), commodity2));

            Assert.Equal("balToStrA1  \nbalToStrB2", balance.ToString().RemoveCarriageReturns());
        }
Exemplo n.º 11
0
        public void Balance_Divide_RequiresNoCommoditiesForAmountIfBalanceIsMultiAmount()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(10, commodity1));
            balance.Add(new Amount(10, commodity2));

            Assert.Throws <BalanceError>(() => balance.Divide(new Amount(10, commodity2)));
        }
Exemplo n.º 12
0
        public void Balance_Divide_RequiresNoCommoditiesForAmountIfBalanceIsMultiAmount()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(10), commodity2));

            Balance result = balance.Divide(new Amount(BigInt.FromInt(10), commodity2));
        }
Exemplo n.º 13
0
        public void Balance_IsLessThan_ComparesAllAmounts()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(10, commodity1));
            balance.Add(new Amount(20, commodity2));

            Assert.True(balance.IsLessThan(new Amount(30)));
            Assert.False(balance.IsLessThan(new Amount(10)));
        }
Exemplo n.º 14
0
        public void Balance_Multiply_MultipliesSingleAmountBalance()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));

            Balance balance = new Balance();

            balance.Add(new Amount(10, commodity1));
            balance.Add(new Amount(20, commodity1));

            Balance result = balance.Multiply(new Amount(10, commodity1));

            Assert.Equal(300, balance.Amounts.First().Value.Quantity.ToLong());
        }
Exemplo n.º 15
0
        public void Balance_IsGreaterThan_ComparesAllAmounts()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(20), commodity2));

            Assert.IsFalse(balance.IsGreaterThan(new Amount(30)));
            Assert.IsTrue(balance.IsGreaterThan(new Amount(10)));
        }
Exemplo n.º 16
0
        public void Balance_Divide_DividessSingleAmountBalance()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(20), commodity1));

            Balance result = balance.Divide(new Amount(BigInt.FromInt(10), commodity1));

            Assert.AreEqual(3, balance.Amounts.First().Value.Quantity.ToLong());
        }
Exemplo n.º 17
0
        public void Balance_IsSingleAmount_IndicatesThatBalanceHasOneAmounts()
        {
            Balance balance = new Balance();

            Assert.IsFalse(balance.IsSingleAmount);

            balance.Add(new Amount(1));
            Assert.IsTrue(balance.IsSingleAmount);

            Commodity comm = new Commodity(CommodityPool.Current, new CommodityBase("comm"));

            balance.Add(new Amount(BigInt.FromLong(1), comm));
            Assert.IsFalse(balance.IsSingleAmount);
        }
Exemplo n.º 18
0
        public void Balance_Multiply_MultipliesAmountsIfGivenAmountHasNoCommodity()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(10, commodity1));
            balance.Add(new Amount(20, commodity2));

            Balance result = balance.Multiply(new Amount(5));

            Assert.Equal(50, balance.Amounts.First().Value.Quantity.ToLong());
            Assert.Equal(100, balance.Amounts.Last().Value.Quantity.ToLong());
        }
Exemplo n.º 19
0
        public void Balance_Divide_MultipliesAmountsIfGivenAmountHasNoCommodity()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));
            Commodity commodity2 = new Commodity(CommodityPool.Current, new CommodityBase("base-2"));

            Balance balance = new Balance();

            balance.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance.Add(new Amount(BigInt.FromInt(20), commodity2));

            Balance result = balance.Divide(new Amount(5));

            Assert.AreEqual(2, balance.Amounts.First().Value.Quantity.ToLong());
            Assert.AreEqual(4, balance.Amounts.Last().Value.Quantity.ToLong());
        }
Exemplo n.º 20
0
        public void Balance_EqualsBalance_ComparesBalanceAmountsToBeEqual()
        {
            Commodity commodity1 = new Commodity(CommodityPool.Current, new CommodityBase("base-1"));

            Balance balance1 = new Balance();

            balance1.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance1.Add(new Amount(BigInt.FromInt(20), commodity1));

            Balance balance2 = new Balance();

            balance2.Add(new Amount(BigInt.FromInt(10), commodity1));
            balance2.Add(new Amount(BigInt.FromInt(20), commodity1));

            Assert.IsTrue(balance1.Equals(balance2));
        }
Exemplo n.º 21
0
        public void AddData(string name, object value)
        {
            switch (name)
            {
            case "Логин": Login.Add((string)value); break;

            case "Пароль": Password.Add((string)value); break;

            case "Email": Email.Add((string)value); break;

            case "Телефон": Phone.Add((string)value); break;

            case "VIP": VIP.Add((bool)value); break;

            case "Баланс": Balance.Add(double.Parse(value.ToString())); break;

            case "Фамилия": LastName.Add((string)value); break;

            case "Имя": FirstName.Add((string)value); break;

            case "Отчество": MiddleName.Add((string)value); break;

            default: MessageBox.Show($"Поле {name} отсутствует!"); break;
            }
        }
Exemplo n.º 22
0
        public Result DepositMoney(PositiveDecimal amount)
        {
            var newBalance = Balance.Add(amount);

            return(newBalance
                   .OnSuccess(UpdateBalance(newBalance.Value)));
        }
Exemplo n.º 23
0
        public void AddCredit(decimal amount)
        {
            _balance = _balance.Add(amount);
            var credit = new Credit(amount);

            _history.Add(Transaction.Create(credit));
        }
Exemplo n.º 24
0
        public void Balance_Add_AddsNonZeroAmounts()
        {
            Balance balance = new Balance();

            balance.Add(new Amount(1));
            Assert.IsTrue(balance.IsSingleAmount);
        }
Exemplo n.º 25
0
        public void Balance_Add_IgnoresZeroAmounts()
        {
            Balance balance = new Balance();

            balance.Add(new Amount(0));
            Assert.IsTrue(balance.IsEmpty);
        }
Exemplo n.º 26
0
        public void Balance_Subtract_RemovesZeroResults()
        {
            Balance balance = new Balance();

            balance.Add(new Amount(5));
            balance.Subtract(new Amount(5));
            Assert.IsTrue(balance.IsEmpty);
        }
Exemplo n.º 27
0
        public void Balance_Print_PerformsLeftJustificationInCaseOfNo_AMOUNT_PRINT_RIGHT_JUSTIFY()
        {
            Balance balance = new Balance();

            balance.Add((Amount)1);
            var result = balance.Print(10);

            Assert.Equal("1         ", result);
        }
Exemplo n.º 28
0
        public void Balance_Subtract_SubtractsAnExistingAmount()
        {
            Balance balance = new Balance();

            balance.Add(new Amount(5));
            balance.Subtract(new Amount(2));
            Assert.IsTrue(balance.IsSingleAmount);
            Assert.AreEqual(3, balance.SingleAmount.Quantity.ToLong());
        }
Exemplo n.º 29
0
        public void Balance_Print_PerformsRightJustificationInCaseOf_AMOUNT_PRINT_RIGHT_JUSTIFY()
        {
            Balance balance = new Balance();

            balance.Add((Amount)1);
            var result = balance.Print(10, 10, AmountPrintEnum.AMOUNT_PRINT_RIGHT_JUSTIFY);

            Assert.AreEqual("         1", result);
        }
Exemplo n.º 30
0
        public void Balance_IsEmpty_IndicatesThatBalanceHasNoAmounts()
        {
            Balance balance = new Balance();

            Assert.IsTrue(balance.IsEmpty);

            balance.Add(new Amount(1));
            Assert.IsFalse(balance.IsEmpty);
        }