示例#1
0
        public void TestEquals()
        {
            var testSubject = new NamedTradeline("test")
            {
                Inception = DateTime.Today.AddYears(-1),
                Terminus  = DateTime.Today
            };

            var testCompare = new NamedTradeline("test")
            {
                Inception = DateTime.Today.AddYears(-1),
                Terminus  = DateTime.Today
            };

            //same dates and name
            Assert.IsTrue(testSubject.Equals(testCompare));
            testCompare.Terminus = DateTime.Today.AddDays(1);

            //same name, same start date, diff end date
            Assert.IsFalse(testSubject.Equals(testCompare));

            //same dates, diff name
            testCompare.Terminus = DateTime.Today.AddDays(1);
            testCompare.Name     = "test2";

            Assert.IsFalse(testSubject.Equals(testCompare));

            //null date is diff date
            testCompare.Name     = "test";
            testCompare.Terminus = null;

            Assert.IsFalse(testSubject.Equals(testCompare));
        }
示例#2
0
 public override void AddItem(NamedTradeline otherIncome)
 {
     if (otherIncome != null)
     {
         _otherIncome.Add(otherIncome);
     }
 }
示例#3
0
        public void TestCtor()
        {
            var testSubject = new AmericanAssets();

            Assert.IsNotNull(testSubject.MyItems);
            Assert.AreEqual(0, testSubject.MyItems.Count);

            //var futures =
            //    NamedReceivable.RandomNamedReceivalbleWithHistoryToSum("Futures", "Securities", 9000D.ToPecuniam());
            //testSubject.AddItem(futures);

            testSubject.AddItem("Futures", "Securities", 9000D.ToPecuniam());
            var testResultSum = testSubject.Total;

            Assert.IsNotNull(testResultSum);
            Assert.AreNotEqual(Pecuniam.Zero, testResultSum);
            Assert.AreEqual(9000D.ToPecuniam(), testResultSum);

            var stocks =
                NamedTradeline.RandomNamedTradelineWithHistoryToSum("Stocks", "Securities", 2000D.ToPecuniam());

            testSubject.AddItem(stocks);

            testResultSum = testSubject.Total.GetWholeNumber();
            Assert.AreNotEqual(Pecuniam.Zero, testResultSum);
            Assert.AreEqual(11000D.ToPecuniam(), testResultSum);
        }
示例#4
0
 public override void AddItem(NamedTradeline expense)
 {
     if (expense == null)
     {
         return;
     }
     _expenses.Add(expense);
 }
示例#5
0
 public override void AddItem(NamedTradeline d)
 {
     if (d == null)
     {
         return;
     }
     _deductions.Add(d);
 }
示例#6
0
        public override void AddItem(NamedTradeline item)
        {
            if (item == null)
            {
                return;
            }

            _assets.Add(item);
        }
示例#7
0
        /// <summary>
        /// While <see cref="GetItemsForRange(AmericanDomusOpesOptions)"/> deals with all the
        /// items of this <see cref="DivisionName"/> this is concerned with one-item-at-a-time.
        /// </summary>
        /// <param name="itemName"></param>
        /// <param name="grpName"></param>
        /// <param name="options"></param>
        /// <param name="rate"></param>
        /// <returns></returns>
        protected internal virtual NamedTradeline GetNamedReceivableForItemAndGroup(string itemName, string grpName, AmericanDomusOpesOptions options, double rate)
        {
            options = options ?? AmericanDomusOpesOptions.RandomOpesOptions();

            var calcValueR = CalcValue((options.SumTotal ?? 0).ToPecuniam(), rate);
            var p          = NamedTradeline.RandomNamedTradelineWithHistoryToSum(itemName, grpName, calcValueR,
                                                                                 options.DueFrequency, options.Inception, options.Terminus);

            return(p);
        }
示例#8
0
        public void TestRandomNamedReceivalbleWithHistoryToSum()
        {
            var testResult =
                NamedTradeline.RandomNamedTradelineWithHistoryToSum("first name", "group name",
                                                                    120000M.ToPecuniam());
            var testResultValue = testResult.Value;

            Console.WriteLine(testResultValue);
            Assert.AreEqual(120000M.ToPecuniam(), testResultValue);
        }
示例#9
0
        public virtual void RemoveItem(NamedTradeline item)
        {
            if (item == null)
            {
                return;
            }
            var matchFromCollection = MyItems.FirstOrDefault(i => i.Equals(item) || ReferenceEquals(i, item));

            if (matchFromCollection == null)
            {
                return;
            }
            MyItems.Remove(matchFromCollection);
        }
示例#10
0
        public void TestCopyFrom()
        {
            var testSubject = new NamedTradeline("TestCorporation");

            testSubject.AddName(KindsOfNames.Group, "Company");

            var testSubject2 = new NamedTradeline(testSubject);

            Assert.AreEqual(testSubject.Name, testSubject2.Name);
            var groupName = testSubject2.GetName(KindsOfNames.Group);

            Assert.IsNotNull(groupName);

            Assert.AreEqual("Company", groupName);
        }
示例#11
0
        public void TestRandomNamedReceivableWithVariedHistory()
        {
            var testResult = NamedTradeline.RandomNamedTradelineWithVariedHistory("firstName", "groupName", 250M.ToPecuniam(), new TimeSpan(30, 0, 0, 0),
                                                                                  DateTime.Today.AddYears(-1));

            Assert.IsNotNull(testResult);
            Assert.AreEqual("firstName", testResult.GetName(KindsOfNames.Legal));
            Assert.AreEqual("groupName", testResult.GetName(KindsOfNames.Group));
            var testResultAverage = testResult.AveragePerDueFrequency();

            Console.WriteLine(testResultAverage);
            var testResultDiff = System.Math.Abs(250M - testResultAverage.Amount);

            Assert.IsTrue(testResultDiff < 83M);
            Console.WriteLine(testResult.Balance.FirstTransaction);
            Console.WriteLine(testResult.Balance.LastTransaction);
        }
示例#12
0
        /// <summary>
        /// Composes the items for Public Benefits (a.k.a. welfare) whenever
        /// income is below the federal poverty level
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        protected internal virtual NamedTradeline[] GetPublicBenefitIncomeItemsForRange(AmericanDomusOpesOptions options)
        {
            options = options ?? AmericanDomusOpesOptions.RandomOpesOptions();
            var startDate = options.Inception;
            var endDate   = options.Terminus;
            var itemsout  = new List <NamedTradeline>();

            startDate = startDate == DateTime.MinValue ? GetYearNeg(-1) : startDate;
            var isPoor = IsBelowFedPovertyAt(options);

            var grossIncome = GetAnnualEmplyGrossIncome(startDate);
            var netIncome   = GetAnnualEmplyNetIncome(startDate);
            var hudAmt      = isPoor ? GetHudMonthlyAmount(grossIncome, netIncome) : Pecuniam.Zero;
            var snapAmt     = isPoor ? GetFoodStampsMonthlyAmount(netIncome) : Pecuniam.Zero;

            var incomeItems = GetIncomeItemNames().Where(i => i.GetName(KindsOfNames.Group) == IncomeGroupNames.PUBLIC_BENEFITS);

            foreach (var incomeItem in incomeItems)
            {
                NamedTradeline p = null;

                switch (incomeItem.Name)
                {
                case "Supplemental Nutrition Assistance Program":
                    p = NamedTradeline.RandomNamedTradelineWithHistoryToSum(incomeItem.Name,
                                                                            IncomeGroupNames.PUBLIC_BENEFITS, snapAmt,
                                                                            PecuniamExtensions.GetTropicalMonth(), startDate, endDate);
                    break;

                case "Housing Choice Voucher Program Section 8":
                    p = NamedTradeline.RandomNamedTradelineWithHistoryToSum(incomeItem.Name,
                                                                            IncomeGroupNames.PUBLIC_BENEFITS, hudAmt,
                                                                            PecuniamExtensions.GetTropicalMonth(), startDate, endDate);
                    break;
                    //TODO implement the other welfare programs
                }
                if (p != null)
                {
                    itemsout.Add(p);
                }
            }
            return(itemsout.ToArray());
        }
示例#13
0
        public void TestToData()
        {
            var dt          = DateTime.Today;
            var testSubject = new NamedTradeline("Test Name");

            testSubject.AddName(KindsOfNames.Group, "Company");
            var cusip = new Cusip().Value;

            testSubject.AddPositiveValue(dt.AddDays(-360), new Security(cusip, 5000));
            testSubject.AddPositiveValue(dt.AddDays(-360), new Pecuniam(500000.0M));
            testSubject.Inception = dt.AddDays(-365);
            testSubject.AddPositiveValue(dt.AddDays(-365), new Pecuniam(800000M));


            var testResult = testSubject.ToData(KindsOfTextCase.Kabab);

            var asJson = JsonConvert.SerializeObject(testResult, Formatting.Indented);

            Console.WriteLine(asJson);
        }
示例#14
0
        public virtual void AddItem(string name, string groupName, Pecuniam expectedValue, DateTime?atTime = null,
                                    TimeSpan?dueFrequency = null)
        {
            var amt = expectedValue ?? Pecuniam.Zero;
            var dt  = atTime.GetValueOrDefault(DateTime.UtcNow);
            var tss = dueFrequency ?? Constants.TropicalYear;
            var p   = new NamedTradeline(new VocaBase(name, DivisionName))
            {
                DueFrequency = tss
            };

            if (amt.Amount < 0M)
            {
                p.AddNegativeValue(dt, amt);
            }
            else
            {
                p.AddPositiveValue(dt, amt);
            }
            AddItem(p);
        }
示例#15
0
 public abstract void AddItem(NamedTradeline item);