def test_balance_sub_single(): test_cases = [ { "left": decimal.Decimal("0.01"), "right": decimal.Decimal("0.02"), "answer": decimal.Decimal("-0.01") }, { "left": decimal.Decimal("-0.05"), "right": decimal.Decimal("-0.10"), "answer": decimal.Decimal("0.05"), }, { "left": decimal.Decimal("0.05"), "right": decimal.Decimal("-0.10"), "answer": decimal.Decimal("0.15"), }, ] for tc in test_cases: a = envelopes.Balance() a[UNITED_STATES] = tc["left"] b = envelopes.Balance() b[UNITED_STATES] = tc["right"] c = a - b assert tc["answer"] == c[UNITED_STATES] assert a[UNITED_STATES] == tc["left"] assert b[UNITED_STATES] == tc["right"]
def test_balance_equal(): ten_dollars = envelopes.Balance() ten_dollars[UNITED_STATES] = decimal.Decimal('10') five_dollars = envelopes.Balance() five_dollars[UNITED_STATES] = decimal.Decimal('5') ten_euro = envelopes.Balance() ten_euro[EUROPEAN_UNION] = decimal.Decimal('10') ten_euro_not_empty = envelopes.Balance() ten_euro_not_empty[EUROPEAN_UNION] = decimal.Decimal('10') ten_euro_not_empty[UNITED_STATES] = decimal.Decimal('0') ten_dollars_not_empty = envelopes.Balance() ten_dollars_not_empty[UNITED_STATES] = decimal.Decimal('10') ten_dollars_not_empty[EUROPEAN_UNION] = decimal.Decimal('0') test_cases = [ { "left": ten_dollars, "right": ten_dollars, "answer": True, }, { "left": ten_dollars, "right": five_dollars, "answer": False, }, { "left": five_dollars, "right": ten_dollars, "answer": False, }, { "left": ten_euro, "right": ten_dollars, "answer": False, }, { "left": ten_euro_not_empty, "right": ten_euro, "answer": True, }, { "left": ten_dollars_not_empty, "right": ten_dollars, "answer": True, }, ] for tc in test_cases: got = tc["left"] == tc["right"] assert got == tc["answer"]
def test_load_repo1(): wanted_budget_base = envelopes.Balance() wanted_budget_base["USD"] = decimal.Decimal("0") wanted_budget_grocery = envelopes.Balance() wanted_budget_grocery["USD"] = decimal.Decimal("107.92") wanted_accounts = envelopes.Accounts() wanted_accounts["checking"] = decimal.Decimal("107.92") target_dir = pathlib.Path(__file__).parent.absolute() target_dir = os.path.join(target_dir.parent, "testdata", "repo1") subject = index.load_state(target_dir) assert subject.budget.balance == wanted_budget_base assert subject.budget.children["grocery"].balance == wanted_budget_grocery assert len(subject.accounts) == 1 assert 'checking' in subject.accounts.keys() assert wanted_accounts == subject.accounts
def test_load_repo2(): wanted_budget_base = envelopes.Balance() wanted_budget_base["USD"] = decimal.Decimal("39621.38") wanted_accounts = envelopes.Accounts() wanted_accounts['usbank/checking'] = 492.89 wanted_accounts['usbank/savings'] = 9071.33 wanted_accounts['etrade/retirement'] = 30056.16 target_dir = pathlib.Path(__file__).parent.absolute() target_dir = os.path.join(target_dir.parent, "testdata", "repo2") subject = index.load_state(target_dir) assert subject.budget.balance == wanted_budget_base assert len(subject.budget.children) == 0 assert len(subject.accounts) == 3 assert 'etrade/retirement' in subject.accounts.keys() assert 'us_bank/checking' in subject.accounts.keys() assert 'us_bank/savings' in subject.accounts.keys()
def test_balance_add_multi(): a = envelopes.Balance() a[UNITED_STATES] = decimal.Decimal("2.1") a[EUROPEAN_UNION] = decimal.Decimal("1.3") b = envelopes.Balance() b[UNITED_STATES] = decimal.Decimal("4.2") b[EUROPEAN_UNION] = decimal.Decimal("2.9") c = envelopes.Balance() c[UNITED_STATES] = decimal.Decimal("6.3") c[EUROPEAN_UNION] = decimal.Decimal("4.2") d = envelopes.Balance() d[UNITED_STATES] = decimal.Decimal("2.5") d[EUROPEAN_UNION] = decimal.Decimal("4.8") test_cases = [ { "left": a, "right": b, "answer": c }, { "left": envelopes.Balance(UNITED_STATES + " 2.5"), "right": envelopes.Balance(EUROPEAN_UNION + " 4.8"), "answer": d }, { "left": envelopes.Balance(EUROPEAN_UNION + " 4.8"), "right": envelopes.Balance(UNITED_STATES + " 2.5"), "answer": d }, ] for tc in test_cases: ans = tc["left"] + tc["right"] assert tc["answer"] == ans
def test_parse_balance(): forty_two_dollars = envelopes.Balance() forty_two_dollars[UNITED_STATES] = decimal.Decimal("42") zero_euro = envelopes.Balance() zero_euro[EUROPEAN_UNION] = decimal.Decimal("0") one_four_two_three_point_nine_one_dollars = envelopes.Balance() one_four_two_three_point_nine_one_dollars[UNITED_STATES] = decimal.Decimal( "1423.91") negative_ten_dollars = envelopes.Balance() negative_ten_dollars[UNITED_STATES] = decimal.Decimal("-10.00") two_cents = envelopes.Balance() two_cents[UNITED_STATES] = decimal.Decimal(".02") test_cases = [{ "raw": "{} 42.00".format(UNITED_STATES), "expected": forty_two_dollars, }, { "raw": "{} 0".format(EUROPEAN_UNION), "expected": zero_euro, }, { "raw": "{} 1,423.91".format(UNITED_STATES), "expected": one_four_two_three_point_nine_one_dollars, }, { "raw": "{} -10.00".format(UNITED_STATES), "expected": negative_ten_dollars, }, { "raw": "{} .02".format(UNITED_STATES), "expected": two_cents, }] for tc in test_cases: subject = envelopes.Balance(tc["raw"]) assert subject == tc["expected"]