def test_withdrawal_with_sufficient_funds_in_bank():
  bank = Bank()
  account_id = bank.create_account('Dagobert')
  bank.deposit(account_id, 100)
  bank.withdraw(account_id, 30)
  account = bank.find_account(account_id)
  assert account.get_balance() == 70
def test_withdrawal_with_insufficient_funds_in_bank_fails():
  bank = Bank()
  account_id = bank.create_account('Dagobert')
  bank.deposit(account_id, 100)
  err = bank.withdraw(account_id, 200)
  assert err == 'insufficient funds'
def test_withdrawal_from_nonexistent_account_in_bank_fails():
  bank = Bank()
  invalid_id = 42
  err = bank.withdraw(invalid_id, 100)
  assert err == 'account not found'
def test_withdrawal_neg_amount_in_bank_fails():
  bank = Bank()
  account_id = bank.create_account('Dagobert')
  bank.deposit(account_id, 100)
  err = bank.withdraw(account_id, -100)
  assert err == 'negative amount'