def test_update_consumption(): consump = Consumption() consump.update_consumption({}) revision = { 'MPC_e20400': {2014: 0.05, 2015: 0.06}, 'BEN_mcare_value': {2014: 0.75, 2015: 0.80} } consump.update_consumption(revision) expected_mpc_e20400 = np.full((Consumption.DEFAULT_NUM_YEARS,), 0.06) expected_mpc_e20400[0] = 0.0 expected_mpc_e20400[1] = 0.05 assert np.allclose(consump._MPC_e20400, expected_mpc_e20400, rtol=0.0) assert np.allclose(consump._MPC_e17500, np.zeros((Consumption.DEFAULT_NUM_YEARS,)), rtol=0.0) expected_ben_mcare_value = np.full((Consumption.DEFAULT_NUM_YEARS,), 0.80) expected_ben_mcare_value[0] = 1.0 expected_ben_mcare_value[1] = 0.75 assert np.allclose(consump._BEN_mcare_value, expected_ben_mcare_value, rtol=0.0) assert np.allclose(consump._BEN_snap_value, np.ones((Consumption.DEFAULT_NUM_YEARS,)), rtol=0.0) consump.set_year(2015) assert consump.current_year == 2015 assert consump.MPC_e20400 == 0.06 assert consump.MPC_e17500 == 0.0 assert consump.BEN_mcare_value == 0.80 assert consump.BEN_snap_value == 1.0
def test_update_consumption(): consump = Consumption(start_year=2013) consump.update_consumption({ 2014: { '_MPC_e20400': [0.05], '_BEN_mcare_value': [0.75] }, 2015: { '_MPC_e20400': [0.06], '_BEN_mcare_value': [0.80] } }) expected_mpc_e20400 = np.full((Consumption.DEFAULT_NUM_YEARS, ), 0.06) expected_mpc_e20400[0] = 0.0 expected_mpc_e20400[1] = 0.05 assert np.allclose(consump._MPC_e20400, expected_mpc_e20400, rtol=0.0) assert np.allclose(consump._MPC_e17500, np.zeros((Consumption.DEFAULT_NUM_YEARS, )), rtol=0.0) expected_ben_mcare_value = np.full((Consumption.DEFAULT_NUM_YEARS, ), 0.80) expected_ben_mcare_value[0] = 1.0 expected_ben_mcare_value[1] = 0.75 assert np.allclose(consump._BEN_mcare_value, expected_ben_mcare_value, rtol=0.0) assert np.allclose(consump._BEN_snap_value, np.ones((Consumption.DEFAULT_NUM_YEARS, )), rtol=0.0) consump.set_year(2015) assert consump.current_year == 2015 assert consump.MPC_e20400 == 0.06 assert consump.MPC_e17500 == 0.0 assert consump.BEN_mcare_value == 0.80 assert consump.BEN_snap_value == 1.0
def test_future_update_consumption(): consump = Consumption() assert consump.current_year == consump.start_year assert consump.has_response() is False cyr = 2020 consump.set_year(cyr) consump.update_consumption({cyr: {'_MPC_e20400': [0.01]}}) assert consump.current_year == cyr assert consump.has_response() is True consump.set_year(cyr - 1) assert consump.has_response() is False
def test_future_update_consumption(): consump = Consumption() assert consump.current_year == consump.start_year assert consump.has_response() is False cyr = 2020 consump.set_year(cyr) consump.update_consumption({cyr: {"_MPC_e20400": [0.01]}}) assert consump.current_year == cyr assert consump.has_response() is True consump.set_year(cyr - 1) assert consump.has_response() is False
def test_update_consumption(): consump = Consumption(start_year=2013) consump.update_consumption({2014: {"_MPC_e20400": [0.05]}, 2015: {"_MPC_e20400": [0.06]}}) expected_mpc_e20400 = np.full((Consumption.DEFAULT_NUM_YEARS,), 0.06) expected_mpc_e20400[0] = 0.0 expected_mpc_e20400[1] = 0.05 assert np.allclose(consump._MPC_e20400, expected_mpc_e20400, rtol=0.0) assert np.allclose(consump._MPC_e17500, np.zeros((Consumption.DEFAULT_NUM_YEARS,)), rtol=0.0) consump.set_year(2015) assert consump.current_year == 2015 assert consump.MPC_e20400 == 0.06 assert consump.MPC_e17500 == 0.0
def test_update_consumption(): consump = Consumption(start_year=2013) consump.update_consumption({2014: {'_MPC_e20400': [0.05]}, 2015: {'_MPC_e20400': [0.06]}}) expected_mpc_e20400 = np.full((Consumption.DEFAULT_NUM_YEARS,), 0.06) expected_mpc_e20400[0] = 0.0 expected_mpc_e20400[1] = 0.05 assert np.allclose(consump._MPC_e20400, expected_mpc_e20400, rtol=0.0) assert np.allclose(consump._MPC_e17500, np.zeros((Consumption.DEFAULT_NUM_YEARS,)), rtol=0.0) consump.set_year(2015) assert consump.current_year == 2015 assert consump.MPC_e20400 == 0.06 assert consump.MPC_e17500 == 0.0
def test_update_consumption(): consump = Consumption() consump.update_consumption({}) revision = { 'MPC_e20400': { 2014: 0.05, 2015: 0.06 }, 'BEN_mcare_value': { 2014: 0.75, 2015: 0.80 } } consump.update_consumption(revision) expected_mpc_e20400 = np.full((Consumption.DEFAULT_NUM_YEARS, ), 0.06) expected_mpc_e20400[0] = 0.0 expected_mpc_e20400[1] = 0.05 assert np.allclose(consump._MPC_e20400, expected_mpc_e20400, rtol=0.0) assert np.allclose(consump._MPC_e17500, np.zeros((Consumption.DEFAULT_NUM_YEARS, )), rtol=0.0) expected_ben_mcare_value = np.full((Consumption.DEFAULT_NUM_YEARS, ), 0.80) expected_ben_mcare_value[0] = 1.0 expected_ben_mcare_value[1] = 0.75 assert np.allclose(consump._BEN_mcare_value, expected_ben_mcare_value, rtol=0.0) assert np.allclose(consump._BEN_snap_value, np.ones((Consumption.DEFAULT_NUM_YEARS, )), rtol=0.0) consump.set_year(2015) assert consump.current_year == 2015 assert consump.MPC_e20400 == 0.06 assert consump.MPC_e17500 == 0.0 assert consump.BEN_mcare_value == 0.80 assert consump.BEN_snap_value == 1.0
def test_future_update_consumption(): consump = Consumption() assert consump.current_year == consump.start_year assert consump.has_response() is False cyr = 2020 consump.set_year(cyr) consump.update_consumption({cyr: {'_MPC_e20400': [0.01]}}) assert consump.current_year == cyr assert consump.has_response() is True consump.set_year(cyr - 1) assert consump.has_response() is False # test future updates for benefits consump_ben = Consumption() assert consump_ben.current_year == consump_ben.start_year assert consump_ben.has_response() is False consump_ben.set_year(cyr) consump_ben.update_consumption({cyr: {'_BEN_vet_value': [0.95]}}) assert consump_ben.current_year == cyr assert consump_ben.has_response() is True consump_ben.set_year(cyr - 1) assert consump_ben.has_response() is False
def test_future_update_consumption(): consump = Consumption() assert consump.current_year == consump.start_year assert consump.has_response() is False cyr = 2020 consump.set_year(cyr) consump.update_consumption({'MPC_e20400': {cyr: 0.01}}) assert consump.current_year == cyr assert consump.has_response() is True consump.set_year(cyr - 1) assert consump.has_response() is False # test future updates for benefits consump_ben = Consumption() assert consump_ben.current_year == consump_ben.start_year assert consump_ben.has_response() is False consump_ben.set_year(cyr) consump_ben.update_consumption({'BEN_vet_value': {cyr: 0.95}}) assert consump_ben.current_year == cyr assert consump_ben.has_response() is True consump_ben.set_year(cyr - 1) assert consump_ben.has_response() is False
def test_json_file_contents(tests_path, fname): """ Check contents of JSON parameter files in Tax-Calculator/taxcalc directory. """ first_year = Policy.JSON_START_YEAR last_known_year = Policy.LAST_KNOWN_YEAR # for indexed parameter values known_years = set(range(first_year, last_known_year + 1)) long_params = [ 'II_brk1', 'II_brk2', 'II_brk3', 'II_brk4', 'II_brk5', 'II_brk6', 'II_brk7', 'PT_brk1', 'PT_brk2', 'PT_brk3', 'PT_brk4', 'PT_brk5', 'PT_brk6', 'PT_brk7', 'PT_qbid_taxinc_thd', 'ALD_BusinessLosses_c', 'STD', 'II_em', 'II_em_ps', 'AMT_em', 'AMT_em_ps', 'AMT_em_pe', 'ID_ps', 'ID_AllTaxes_c' ] # for TCJA-reverting long_params long_known_years = set(range(first_year, last_known_year + 1)) long_known_years.add(2026) # check elements in each parameter sub-dictionary failures = '' with open(os.path.join(tests_path, "..", fname)) as f: allparams = json.loads(f.read()) for pname in allparams: if pname == "schema": continue # check that param contains required keys param = allparams[pname] # check that indexable and indexed are False in many files if fname != 'policy_current_law.json': assert param.get('indexable', False) is False assert param.get('indexed', False) is False # check that indexable is True when indexed is True if param.get('indexed', False) and not param.get('indexable', False): msg = 'param:<{}>; indexed={}; indexable={}' fail = msg.format(pname, param.get('indexed', False), param.get('indexable', False)) failures += fail + '\n' # check that indexable param has value_type float if param.get('indexable', False) and param['type'] != 'float': msg = 'param:<{}>; type={}; indexable={}' fail = msg.format(pname, param['type'], param.get('indexable', False)) failures += fail + '\n' # ensure that indexable is False when value_type is not real if param.get('indexable', False) and param['type'] != 'float': msg = 'param:<{}>; indexable={}; type={}' fail = msg.format(pname, param.get('indexable', False), param['value_type']) failures += fail + '\n' if fname == "consumption.json": o = Consumption() elif fname == "policy_current_law.json": o = Policy() elif fname == "growdiff.json": o = GrowDiff() param_list = [] for k in o: if k[0].isupper(): # find parameters by case of first letter param_list.append(k) for param in param_list: for y in known_years: o.set_year(y) if np.isnan(getattr(o, param)).any(): msg = 'param:<{}>; not found in year={}' fail = msg.format(param, y) failures += fail + '\n' if failures: raise ValueError(failures)