示例#1
0
def test_homemade_nbptr_function(
    reform_config_base_2020, nbptr_parametres_par_defaut, various_cas_types
):
    # Verifie que les resultats de nbptr et irpp sont les mêmes avec la fonction par defaut
    period = "2020"
    data = dataframe_from_cas_types_description(various_cas_types)
    tbs_reforme_sans_nbptr = IncomeTaxReform(
        FranceTaxBenefitSystem(), reform_config_base_2020, period
    )
    tbs_reforme_avec_nbptr = IncomeTaxReform(
        FranceTaxBenefitSystem(),
        {
            "impot_revenu": {
                **(reform_config_base_2020["impot_revenu"]),
                **nbptr_parametres_par_defaut,
            }
        },
        period,
    )

    sim_sans_nbptr, _ = simulation(period, data, tbs_reforme_sans_nbptr)
    sim_avec_nbptr, _ = simulation(period, data, tbs_reforme_avec_nbptr)

    print("sans", sim_sans_nbptr.calculate("nbptr", period))
    print("avec", sim_avec_nbptr.calculate("nbptr", period))

    assert array_equal(
        sim_sans_nbptr.calculate("nbptr", period),
        sim_avec_nbptr.calculate("nbptr", period),
    )
    assert array_equal(
        sim_sans_nbptr.calculate("irpp", period),
        sim_avec_nbptr.calculate("irpp", period),
    )
def test_dataframe_from_cas_types_description():
    cas_types_description = {}  # Cf. desc_cas_types()

    expected_data_columns = [
        "index",
        "activite",
        "age",
        "categorie_salarie",
        "chomage_brut",
        "chomage_imposable",
        "contrat_de_travail",
        "date_naissance",
        "effectif_entreprise",
        "idfam",
        "idfoy",
        "idmen",
        "pensions_alimentaires_percues",
        "quifam",
        "quifoy",
        "quimen",
        "rag",
        "retraite_brute",
        "ric",
        "rnc",
        "statut_marital",
        "salaire_de_base",
        "taux_csg_remplacement",
        "f4ba",
        "loyer",
        "statut_occupation_logement",
        "taxe_habitation",
        "wprm",
        "zone_apl",
        "quimenof",
        "residence_fiscale_guadeloupe",
        "residence_fiscale_guyane",
        "quifoyof",
        "quifamof",
        "caseF",
        "caseL",
        "caseP",
        "caseT",
        "caseW",
        "garde_alternee",
        "invalidite",
    ]
    expected_simulation_data = pandas.DataFrame(
        columns=expected_data_columns,
        index=pandas.RangeIndex(start=0, stop=0, step=1),
        dtype="float64",
    )

    simulation_data = dataframe_from_cas_types_description(
        cas_types_description)
    print("expected_simulation_data", expected_simulation_data)
    print("simulation_data", simulation_data)
    assert_frame_equal(simulation_data, expected_simulation_data)
示例#3
0
def test_zero_nbptr(reform_config_base_2020, nbptr_zero, various_cas_types):
    # Verifie que les resultats de nbptr sont bien zero pour tout le monde si tous les param
    # sont à zéro
    period = "2020"
    data = dataframe_from_cas_types_description(various_cas_types)
    tbs_reforme_avec_nbptr = IncomeTaxReform(
        FranceTaxBenefitSystem(),
        {"impot_revenu": {**(reform_config_base_2020["impot_revenu"]), **nbptr_zero}},
        period,
    )

    sim_avec_nbptr, _ = simulation(period, data, tbs_reforme_avec_nbptr)

    resultats_nbptr = sim_avec_nbptr.calculate("nbptr", period)

    assert not resultats_nbptr.any()
示例#4
0
def test_deux_adultes_ancien_combattants_deux_enfants(reform_config_base_2020):
    # données
    foyer = {
        "declarants": [
            {
                "ancienCombattant": True,
                "invalide": False,
                "parentIsole": False,
                "retraite": False,
                "veuf": False
            },
            {
                "ancienCombattant": True,
                "invalide": False,
                "parentIsole": False,
                "retraite": False,
                "veuf": False
            }
        ],
        "personnesACharge": [
            {
                "chargePartagee": False,
                "invalide": False
            },
            {
                "chargePartagee": False,
                "invalide": False
            }
        ],
        "residence": "metropole",
        "revenuImposable": 120000
    }
    data = dataframe_from_cas_types_description([foyer])
    period = "2020"

    # loi française + réforme IR
    tbs_reforme_impot_revenu = IncomeTaxReform(
        FranceTaxBenefitSystem(), reform_config_base_2020, period
    )
    built_simulation, _dict_data_by_entity = simulation(
        period, data, tbs_reforme_impot_revenu
    )

    nbptr = built_simulation.calculate("nbptr", period)
    assert nbptr == [3.5]