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)
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()
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]