public void BeregnReserveWhenAgeIsFractionedShouldReturnInterpolatedValue()
        {
            var mockAge = _mockRepository.DynamicMock<InsuranceAgeCalculator>();
            var mockCalc = _mockRepository.DynamicMock<RenteReserveCalculator>();
            var mockDb = _mockRepository.DynamicMock<DbAdapter>();

            var foedselsDato = new DateTime(1980, 6, 30);
            var beregningsDato = new DateTime(2012, 12, 31);
            using (_mockRepository.Record())
            {
                SetupResult.For(mockAge.CalculateAge(foedselsDato, beregningsDato)).IgnoreArguments().Return(1.1);
                const int age = 1;
                SetupResult.For(mockCalc.CalculateForEenKrone(age)).Return((decimal) 1);
                SetupResult.For(mockCalc.CalculateForEenKrone(age + 1)).Return((decimal) 0.9);
            }

            var e = new RenteReserveBeregner(mockAge, (koen, consumerPriceIndex) => mockCalc);
            const int ydelsePrMaaned = 1;
            var reserve = e.BeregnReserve(foedselsDato, beregningsDato, Koen.Kvinde, ydelsePrMaaned, 0);

            Expect(reserve, Is.EqualTo(11.88).Within(0.001));
        }
        public void BeregnAkkumuleretReserveTil67AarMedInterpolationShouldMatchDataFromSpreadsheet()
        {
            var dbAdapter = new DbAdapter(Program.DbConnectionString);
            dbAdapter.ReadFromDb();
            var e = new RenteReserveBeregner(dbAdapter);

            var foedselsDato = new DateTime(1980, 6, 30);
            var udloebsDato = new DateTime(2013, 1, 1);

            /* Ydelse pr maaned er hentet fra kolonne E benævnt fakturasum
             * i regnearket "beregning af rentereserver" i panelet "dataark"
             * */
            const int ydelsePrMaaned = 6554;
            var renteReserve = e.BeregnReserve(foedselsDato, udloebsDato, Koen.Kvinde,
                                                                                  ydelsePrMaaned, 0);

            /* rentereserven er hentet fra kolonne O som Olsen benævnt fakturasum
             * i regnearket "beregning af rentereserver" i panelet "dataark"
             * */
            const decimal expectedRenteReserve = (decimal) 1997696.35904207;
            Expect(renteReserve, Is.EqualTo(expectedRenteReserve).Within(10));
        }
 private void AssertSkade(ErhvervsSkade skade, DbAdapter dbAdapter)
 {
     var e = new RenteReserveBeregner(dbAdapter);
     var reserve = e.BeregnReserve(skade.BuildFictionalDate(), EndOf2012,Koen.Kvinde, skade.Fakturasum, 0);
     Expect(reserve, Is.EqualTo(skade.Reserve).Within(26));
     var message = string.Format("Udbetalinger (år): {0}\t Fakturasum: {1}\t og forskel {2}",
                                 Math.Round(67 - skade.Alder, 2), skade.Fakturasum,
                                 Math.Round(reserve - skade.Reserve, 2));
     Debug.Print(message);
 }
 private static Decimal BeregnSkade(DbAdapter dbAdapter, ErhvervsSkade skade)
 {
     var e = new RenteReserveBeregner(dbAdapter);
     return e.BeregnReserve(skade.BuildFictionalDate(), EndOf2012, Koen.Kvinde,
                                                               skade.Fakturasum, 0);
 }
 public void BeregnReserveWithDiskontoFrom10Oktober2012Other()
 {
     //150182-xxx6
     var db = new DbAdapter(Program.DbConnectionString);
     db.ReadFromDb();
     db.SetDiskontoSatser(TestConstants.DiskonteringsRente10Oktober2012);
     var e = new RenteReserveBeregner(db);
     var foedselsDato = new DateTime(1982, 1, 15);
     var beregningsDato = new DateTime(2012, 12, 31);
     var age = new InsuranceAgeCalculator().CalculateAge(foedselsDato, beregningsDato);
     Expect(age, Is.EqualTo(30.9166666666667).Within(0.001));
     const int comsumerPriceIndexInPercent = 1;
     var reserve = e.BeregnReserve(foedselsDato, beregningsDato, Koen.Kvinde, 10034, comsumerPriceIndexInPercent);
     const double expectedReserveFromSpreadsheet = 3719302.94806157;
     Expect(reserve, Is.EqualTo(expectedReserveFromSpreadsheet).Within(10));
 }
 public void BeregnReserveWithDiskontoFrom10Oktober2012()
 {
     //cpr: 160680-xxx6
     var db = new DbAdapter(Program.DbConnectionString);
     db.ReadFromDb();
     db.SetDiskontoSatser(TestConstants.DiskonteringsRente10Oktober2012);
     var e = new RenteReserveBeregner(db);
     var foedselsDato = new DateTime(1980,6,16);
     var beregningsDato = new DateTime(2012,12,31);
     var age = new InsuranceAgeCalculator().CalculateAge(foedselsDato, beregningsDato);
     Expect(age, Is.EqualTo(32.5).Within(0.001));
     const int comsumerPriceIndexInPercent = 1;
     var reserve = e.BeregnReserve(foedselsDato, beregningsDato, Koen.Kvinde, 6554, comsumerPriceIndexInPercent);
     Expect(reserve, Is.EqualTo(2347852.93480205).Within(10));
 }