def test_transfer(): """Test transfer method in Account class.""" p1 = Person('Jack', 'Jackson', 19) p2 = Person('Anna', 'Dark', 194) p3 = Person('Igor', 'Smirnov', 33) p4 = Person('Nana', 'Banana', 44) b1 = Bank('NotSwedBank') b2 = Bank('CoolerThanLHV') b3 = Bank('NotYourSEB') p1_acc = Account(100, p1, b1) p2_acc = Account(25, p2, b2) p3_acc = Account(300, p3, b3) p4_acc = Account(0, p4, b3) with pytest.raises(TransactionError): assert p2_acc.transfer(100500, p1_acc) """transaction1 = Transaction(5, datetime.date.today(), p2_acc, p1_acc, False) transaction2 = Transaction(10, datetime.date.today(), p3_acc, p2_acc, False)""" # different banks transfer p2_acc.transfer(5, p1_acc) assert p2_acc.transactions == p1_acc.transactions == b1.transactions == b2.transactions # transaction repr tests for different bank operations expected = f'(5 €) {p2} -> {p1}' assert p2_acc.transactions[0].__repr__() == expected # same bank transfer p3_acc.transfer(10, p4_acc) assert p3_acc.transactions == p4_acc.transactions == b3.transactions
def test_account(): """Test account class.""" person1 = Person("Ellina", "Gedrojets", 18) person2 = Person("Robert", "Soidla", 19) bank1 = Bank("Swed") bank2 = Bank("LHV") acc1 = Account(20, person1, bank1) acc2 = Account(100, person2, bank2) assert len(acc1.number) == 20 assert acc2._balance == 100
def test_transaction(): """Test transaction class.""" person1 = Person("Ellina", "Gedrojets", 18) person2 = Person("Robert", "Soidla", 19) bank1 = Bank("Swed") bank2 = Bank("LHV") acc1 = Account(20, person1, bank1) acc2 = Account(100, person2, bank2) tr1 = Transaction(10, datetime.date.today(), acc1, acc2, False) tr2 = Transaction(20, datetime.date.today(), acc1, acc1, True) assert tr1.__repr__() == "(10 €) Ellina Gedrojets -> Robert Soidla" assert tr2.__repr__() == "(20 €) ATM"
def test_account(): """Test Account class.""" p1 = Person('Jack', 'Jackson', 19) p2 = Person('Anna', 'Dark', 194) b1 = Bank('NotSwedBank') b2 = Bank('CoolerThanLHV') p1_acc = Account(100, p1, b1) p2_acc = Account(25, p2, b2) assert len(p1_acc.number[2:]) == 18 assert p1_acc.number[2] assert p1_acc.balance == 100 assert p2_acc.balance == 25
def fetchBankList(self): prefUrls = [ "http://creditcard.hxb.com.cn/hotnews/index.jsp?cid=12347700871250001", "http://creditcard.hxb.com.cn/hotnews/index.jsp?cid=12347701281290003" ] banks = [] for prefUrl in prefUrls: for page in range(0, self.getPageRange()): url = prefUrl + "&page_count=30&page_start=%d" % (page * 5) soup = self.getSoup(url) if not self.isValidSoup(soup): break lis = soup.find_all("div", id="rm_lcd") for l in lis: b = Bank() a = l.find("a") b.url = "http://creditcard.hxb.com.cn/hotnews/" + a[ "href"].encode("utf-8") b.title = a["title"].encode("utf-8").strip() h6 = l.find("h6").string if h6 != None: m = re.match("\[.*至(.*)\]", h6.encode("utf-8")) if m != None: b.endDate = date_parser.parseDashLineStyle( m.group(1)) banks.append(b) return banks
def createCard(self): idCard = input("请输入您的身份证号:") #验证是否存在该用户 bankSys = Bank() user = bankSys.usersDict.get(idCard) if not user: #用户不存在,需要创建用户 name = input("请输入您的姓名:") phone = input("请输入您的手机号:") user = User(name, idCard, phone) # 存入系统 bankSys.usersDict[idCard] = user #开卡 #设置密码 passwd1 = input("请设置密码:") #验证密码 if self.inputPasswd(passwd1): print("三次密码验证错误,开卡失败") return money = float(input("输入预存款:")) cardId = self.getCardId() card = Card(cardId,passwd1,money) user.cardsDict[cardId] = card print("开卡成功!请牢记卡号:%s"%(cardId))
def test_mixed_addition(self): five_bucks: Expression = Money.dollar(5) ten_franc: Expression = Money.franc(10) bank = Bank() bank.add_rate("CHF", "USD", 2) result = bank.reduce(five_bucks.plus(ten_franc), "USD") self.assertEqual(Money.dollar(10), result)
def createBank(number=0): """Saves a bank with the specified number of accounts. Used during testing.""" bank = Bank() for i in range(number): bank.add(SavingsAccount('Name' + str(i + 1), str(1000 + i), 100.00)) bank.save("bank.dat")
def __init__(self): #create the main window self.main_window = tkinter.Tk() self.bank = Bank("XYZ ltd.") self.main_frame = tkinter.Frame(self.main_window) self.sign_in_frame = tkinter.Frame(self.main_window) #create label for welcome message self.welcome = tkinter.Label( self.main_frame, text=f"Hello! welcome to {self.bank._name}") #create button for signing up self.sign_up = tkinter.Button(self.sign_in_frame, text="Sign Up", command=self.register) self.sign_up.pack(side="left") self.quit_button = tkinter.Button(self.sign_in_frame, text="Quit", command=self.main_window.destroy) self.quit_button.pack() self.sign_in_frame.pack() self.welcome.pack(side="left") self.main_frame.pack() tkinter.mainloop()
def fetchBankList(self): banks = [] baseUrl = "http://www.psbc.com/portal/zh_CN/CreditCard/SpecialOffers/index%s.html" for page in range(0, self.getPageRange()): if page == 0: url = baseUrl % ("", ) else: url = baseUrl % ("_" + str(page), ) soup = self.getSoup(url) if not soup: break for a in soup.find("ul", class_="artic_list clearfix").find_all("a"): b = Bank() url = a["href"].encode("utf-8") if re.match(r"http", url): b.url = url else: b.url = "http://www.psbc.com" + url title = a.string.encode("utf-8") m = re.match("(.*):(.*)", title) if not m: b.title = title else: b.title = m.group(2) b.city = m.group(1) banks.append(b) return banks
def fetchBankList(self): banks = [] baseUrl = "http://www.nbcb.com.cn/xyk/thtghd/index%s.shtml" for page in range(1, self.getPageRange()): url = None if page == 1: url = baseUrl % "" else: url = baseUrl % "_" + str(page) soup = self.getSoup(url) if not soup: break for a in soup.find("div", class_="newslist").find_all("a", class_=""): b = Bank() b.url = "http://www.nbcb.com.cn" + a["href"].encode("utf-8") title = soup_util.getStrings(a) m = re.match(r"\[(.*)\]", title) if m: b.city = m.group(1) b.title = re.sub(r"\[(.*)\]|【(.*)】", "", title) banks.append(b) return banks
def setUp(self): self.bank_id = 1 self.newBank = Bank(self.bank_id) self.USER_ID = 3 self.SECOND_USER_ID = 2 self.PRODUCT_ID = 5 self.PRODUCT_ID_2 = 7
def fetchBankList(self): banks = [] baseUrl = "http://creditcard.pingan.com/cms-tmplt/creditcard/searchPreferentialActivity.do?type=&city=shenzhen¤tPage=%d" for page in range(1, self.getPageRange()): url = baseUrl % page soup = self.getSoup(url) if not soup: break lis = soup.find_all("tr", class_="item") if len(lis) == 0: break for l in lis: b = Bank() a = l.find("a") title = a["title"].encode("utf-8") m = re.match(r"\[(.*)\]", title) if m: b.city = m.group(1) b.title = re.sub(r"【.*】|\[.*\]", "", title) b.url = "http://creditcard.pingan.com" + a["href"].encode( "utf-8") ds = l.contents[-2].string.encode("utf-8") b.endDate = date_parser.parseDashLineStyle(ds) banks.append(b) return banks
def fetchBankList(self): f = self.openUrl("http://cards.ecitic.com/youhui/shuakahuodong.shtml") if f == None: return soup = BeautifulSoup(f) lis = soup.find_all("li", class_="emb4 item-n") banks = [] for li in lis: b = Bank() h2 = li.find_all("h2")[0] title = h2.string.encode("utf-8") b.title = re.sub(r"\[.*\]", "", title) m = re.match(r".*\[(.*)\].*", title) if m: b.city = m.group(1) b.name = self.getName() b.url = "http://cards.ecitic.com/youhui/" + li.find( "a", class_="a-h")["href"].encode("utf-8") ds = li.find("span", class_="date") if ds and ds.string: ds = ds.string.encode("utf-8") m = re.match(r".*-(.*)", ds) if m: b.endDate = date_parser.parseSlashStyle( m.group(1).strip()) banks.append(b) return banks
def main(): customer = [] print("###Bank Initialization###") numcust = int(input("Number of Customer :")) bname = str(input("Name of the Bank :")).title() binfo = Bank(customer, numcust, bname) binfo.toString() for i in range(numcust): print("###Customer Data###") fname = input("First Name :").title() lname = input("Last Name :").title() bal = 0 cinfo = Customer(fname, lname, bal) cinfo.getAccount() customer.append(fname) binfo.toString() while True: print("### Login ###") user = input("Type first name to login :"******"Starting Balance :")) while True: print(("###{0}###\n".format(user) + "Balance :${0}\n".format(Account.getBalance(jbal)) + "[1] Deposit\n" + "[2] Withdraw\n[Q] Quit")) choice = input("Enter Selection :").upper() if choice == "1": jbal.deposit(input("Amount to Deposit :")) elif choice == "2": jbal.withdraw(input("Amount to Withdraw :")) elif choice == "Q": quit()
def test_sum_plus_money(self): bank: Bank = Bank() bank.addRate("CHF", "USD", 2) sum: Expression = Sum(self.five_bucks, self.ten_flancs).plus(self.five_bucks) result: Money = bank.reduce(sum, "USD") self.assertEqual(Money.Dollar(15), result)
def test_mixed_addition(self): five_bucks: Expression = Money.Dollar(5) ten_flancs: Expression = Money.Franc(10) bank: Bank = Bank() bank.addRate("CHF", "USD", 2) result: Money = bank.reduce(five_bucks.plus(ten_flancs), "USD") self.assertEqual(Money.Dollar(10), result)
def test_process_valid_transaction(self): #start atm atm = ATM() # connect bank bank = Bank() atm.connect_bank(bank) # insert cardnumber atm.insert_cardnumber(VALID_CARDNUMBER) # insert_pin atm.authenticate_cardnumber_and_pin(VALID_PIN) # get accounts atm.get_accounts() # show balance transaction = atm.process_transaction(VALID_ACCOUNTS[0], 'show_balance', 0) self.assertEqual(transaction['start_balance'], transaction['end_balance']) self.assertEqual(atm.transaction_history[-1], transaction) amount = 50 # withdraw transaction = atm.process_transaction(VALID_ACCOUNTS[0], 'withdraw', amount) self.assertEquals(transaction['end_balance'] + amount, transaction['start_balance']) self.assertEqual(atm.transaction_history[-1], transaction) # deposit transaction = atm.process_transaction(VALID_ACCOUNTS[0], 'deposit', amount) self.assertEquals(transaction['end_balance'] - amount, transaction['start_balance']) self.assertEqual(atm.transaction_history[-1], transaction)
def test_get_accounts_invalid_card_and_pin(self): #start atm atm = ATM() # connect bank bank = Bank() atm.connect_bank(bank) # no card inserted try: atm.get_accounts() except Exception as exp: self.assertEqual(exp.args[0], "No card in ATM") # insert cardnumber atm.insert_cardnumber(VALID_CARDNUMBER) # insert_pin atm.authenticate_cardnumber_and_pin(INVALID_PIN) try: atm.get_accounts() except Exception as exp: self.assertEqual(exp.args[0], "Invalid card/pin") # active_accounts should be empty self.assertEqual(atm.active_accounts, {})
def setUp(self): self.bank_id = 1 self.bank = Bank(bank_id=self.bank_id) self.USER_ID = random.randint(1, 10) self.ACCOUNT_ID = random.randint(1, 10) self.INVESTMENT_ID = random.randint(11, 20) self.account = self.bank.makeAccount(self.USER_ID, self.ACCOUNT_ID)
def fetchBankList(self): banks = [] #print self.getEndDateByUrl("http://www.abchina.com/cn/CreditCard/Promotions/BusinessActivity/201306/t20130609_352254.htm"); for page in range(0, self.getPageRange()): soup = None if page == 0: soup = self.getSoup( "http://www.abchina.com/cn/PublicPlate/ABCPromotion/default.htm" ) else: soup = self.getSoup( "http://www.abchina.com/cn/PublicPlate/ABCPromotion/default_%d.htm" % (page, )) if not self.isValidSoup(soup): break lis = soup.find_all("li", class_="DotLi100") for l in lis: b = Bank() a = l.find("a") b.url = "http://www.abchina.com/cn/PersonalServices/Promotions/" + a[ "href"].encode("utf-8") b.title = a.string.encode("utf-8") b.endDate = self.getEndDateByUrl(b.url) banks.append(b) return banks
def test_app(tmpdir): db.db_filename = os.path.join(tmpdir, 'test.db') app = Bank() app.setup() assert app.status('foo') == None assert app.status('bar') == None app.deposit('foo', 100) assert app.status('foo') == 100 app.deposit('foo', 10) assert app.status('foo') == 110 app.deposit('bar', 130) assert app.status('foo') == 110 assert app.status('bar') == 130 app.transfer('foo', 'bar', 19) assert app.status('foo') == 91 assert app.status('bar') == 149 with pytest.raises(Exception) as exinfo: app.transfer('foo', 'bar', 200) assert exinfo.type == Exception assert str(exinfo.value) == 'Not enough money'
def fetchBankListByUrl(self, url): banks = [] f = self.openUrl(url) if f == None: return soup = BeautifulSoup(f) lis = soup.find_all("li", class_="link") for l in lis: b = Bank() a = l.find("a") href = a["href"].encode("utf-8") if href.startswith("http:"): b.url = href else: b.url = "http://creditcard.cib.com.cn" + href title = a.string.strip().encode("utf-8") b.city = city_parser.parseBracketStyle(title) if b.city in [ "兴悦会", "机票随兴订", ]: b.city = None b.title = re.sub(r"\[.*?\](.*)", r"\1", title) banks.append(b) return banks
def __init__(self, modelconfig, datacontainer, step_callback, seed=None): super(Market, self).__init__() self.no_steps = modelconfig['no_steps'] self.irs_threshold = modelconfig['irs_threshold'] self.max_irs_value = modelconfig['max_irs_value'] self.max_tenure = modelconfig['max_tenure'] self.no_banks = modelconfig['no_banks'] self.sigma = modelconfig['sigma'] self.__threshold__ = modelconfig['threshold'] self.datacontainer = datacontainer self.step_callback = step_callback self.__time__ = 0 self.seed = seed if (self.seed == None): # Max seed value self.seed = np.random.randint(4294967295) self.generator = np.random.RandomState(self.seed) self.datacontainer.register_seed(self.seed) for i in xrange(self.no_banks): b = Bank(sigma=self.sigma) self.add_node(b)
def fetchBankList(self): banks = [] baseUrls = [ "http://xyk.cebbank.com/home/activities/category/a_region_dd/list%d.htm", "http://xyk.cebbank.com/home/activities/category/a_life_cycle/list%d.htm", ] print baseUrls for bu in baseUrls: for page in range(1, self.getPageRange()): ##url = "http://xyk.cebbank.com/home/activities/category/a_life_cycle/list%d.htm" % page; url = bu % page soup = self.getSoup(url) if not self.isValidSoup(soup): break lis = soup.find("ul", class_="th_list_ul").find_all( "div", class_="floatleft") for l in lis: b = Bank() a = l.find("a") b.url = "http://xyk.cebbank.com" + a["href"].encode( "utf-8") title = a.string.encode("utf-8").strip() m = re.match(r"(.*?)((.*))", title) if m: b.title = m.group(1) b.city = m.group(2) else: b.title = title banks.append(b) return banks
def test_checking_account(): bank = Bank() checkingAccount = Account(CHECKING) bill = Customer("Bill").openAccount(checkingAccount) bank.addCustomer(bill) checkingAccount.deposit(100.0) assert_equals(bank.totalInterestPaid(), 0.1)
def parseResponseJson(self, bankJson): bankName = bankJson['store'] bankAddress = bankJson['address'] + " " + bankJson['city'] + " " + bankJson['state'] bankHours = bankJson['fax'] bankLat = bankJson['lat'] bankLng = bankJson['lng'] return Bank(None, bankName, bankAddress, bankLat, bankLng, bankHours)
def reisse(self): idCard = input("请输入身份证号:") bankSys = Bank() for idCard1, user in bankSys.usersDict.items(): if idCard == idCard1: print("您的名下有%d张卡" % (len(user.cardsDict))) for key, card in user.cardsDict.items(): print("卡号为:%s"%(key)) cardid = input("请输入要补办的卡号:") if cardid in user.cardsDict: passwd1 = input("请设置密码:") # 验证密码 if self.inputPasswd(passwd1): print("三次密码验证错误,补卡失败") return money =user.cardsDict[cardid].money cardId = self.getCardId() card = Card(cardId, passwd1, money) user.cardsDict[cardId] = card print("补卡成功!请牢记卡号:%s" % (cardId)) del user.cardsDict[cardid] return else: print("您的名下没有此卡") return print("您还没开户!!")
def test_mixed_addition(self): five_bucks = MoneyFactory.dollar(5) ten_francs = MoneyFactory.franc(10) bank = Bank() bank.add_rate('CHF', 'USD', 2) result = bank.reduce(five_bucks.plus(ten_francs), 'USD') eq_(MoneyFactory.dollar(10), result)
def getBankList(whereDict, city="all"): conn = getConnection() c = conn.cursor() where = buildWhereClause(whereDict) if city and city != "all": where += " and ct_name = '%s'" % city c.execute( "SELECT * FROM " + BankTable.TABLE_NAME + " LEFT OUTER JOIN " + " (SELECT _id AS ct_id, name AS ct_name FROM city) " + " ON ct_id == " + BankTable.COL_CITY_ID + " " + where + "ORDER BY _id DESC", list(whereDict.viewvalues())) conn.commit() banks = [] for row in c.fetchall(): bank = Bank() bank.name = row[BankTable.COL_NAME] bank.title = row[BankTable.COL_TITLE] bank.fetchTime = row[BankTable.COL_FETCH_TIME] bank.accepted = row[BankTable.COL_ACCEPTED] bank.url = row[BankTable.COL_URL] bank.id = row[BankTable.COL_ID] city = row["ct_name"] if city: bank.city = city banks.append(bank) return banks