tests/testthat/test-CF-Annuity.R

test_that("Annuity Cash Flows", {
    library(MortalityTables)
    mortalityTables.load("Austria_Annuities_AVOe2005R")

    Tarif.Annuity = InsuranceTarif$new(
        name = "Example Tariff - Immediate Annuity",
        type = "annuity",
        tarif = "Ann1",
        desc = "An annuity with single-premium",
        premiumPeriod = 1,

        mortalityTable = AVOe2005R.unisex,
        i = 0.005
    )
    Contract.Annuity = InsuranceContract$new(
        tarif = Tarif.Annuity,
        age = 65, YOB = 1955,
        sumInsured = 1200,
        policyPeriod = 55,
        contractClosing = as.Date("2020-09-01"),
        calculate = "cashflows"
    )
    expect_equal(Contract.Annuity$Parameters$ContractData$policyPeriod, 55)
    expect_equal(Contract.Annuity$Parameters$ContractData$deferralPeriod, 0)
    expect_equal(Contract.Annuity$Parameters$ContractData$premiumPeriod, 1)


    expect_true(all(Contract.Annuity$Values$cashFlows %>% select(-premiums_advance, -survival_advance) == 0))

    # 1 year premium cash flow
    expect_equal(Contract.Annuity$Values$cashFlows$premiums_advance, c(1, rep(0, 55)))
    # premium payment start immediately for the whole contract period
    expect_equal(Contract.Annuity$Values$cashFlows$survival_advance, c(rep(1, 55), 0))
})
kainhofer/r-life-insurance-contracts documentation built on Sept. 18, 2022, 7:56 p.m.