示例#1
0
        public void CyclicGraph()
        {
            var mortgage = new Mortgate
            {
                InterestRate     = 5.5,
                LoanAmount       = 150000,
                LoanLength       = 15,
                PaymentFrequency = PaymentFrequency.Monthly
            };
            var engine = new DependencyEngine();

            engine.Assign(() => mortgage.PaymentAmount)
            .From(() => CalculatePayments(
                      mortgage.LoanAmount,
                      mortgage.InterestRate,
                      mortgage.LoanLength,
                      mortgage.PaymentFrequency),
                  ex => { });

            engine.Assign(() => mortgage.LoanLength)
            .From(() => CalculateLength(
                      mortgage.LoanAmount,
                      mortgage.PaymentAmount,
                      mortgage.InterestRate,
                      mortgage.PaymentFrequency),
                  ex => { });

            var dotFormat = engine.ToDotFormat();

            Console.WriteLine(dotFormat);

            engine.ValueHasChanged(mortgage, "PaymentFrequency");

            mortgage.PaymentAmount.ShouldBe(1225, 1);
            engine.ToDotFormat().ShouldBe(dotFormat);
        }
示例#2
0
        public void CyclicGraph()
        {
            var mortgage = new Mortgate
                               {
                                   InterestRate = 5.5,
                                   LoanAmount = 150000,
                                   LoanLength = 15,
                                   PaymentFrequency = PaymentFrequency.Monthly
                               };
            var engine = new DependencyEngine();

            engine.Assign(() => mortgage.PaymentAmount)
                .From(() => CalculatePayments(
                        mortgage.LoanAmount,
                        mortgage.InterestRate,
                        mortgage.LoanLength,
                        mortgage.PaymentFrequency),
                        ex => { });

            engine.Assign(() => mortgage.LoanLength)
                .From(() => CalculateLength(
                        mortgage.LoanAmount,
                        mortgage.PaymentAmount,
                        mortgage.InterestRate,
                        mortgage.PaymentFrequency),
                        ex => { });

            var dotFormat = engine.ToDotFormat();
            Console.WriteLine(dotFormat);

            engine.ValueHasChanged(mortgage, "PaymentFrequency");

            mortgage.PaymentAmount.ShouldBe(1225, 1);
            engine.ToDotFormat().ShouldBe(dotFormat);
        }