コード例 #1
0
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
コード例 #2
0
ファイル: test_bank.py プロジェクト: Elgedr/Python
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
コード例 #3
0
ファイル: test_bank.py プロジェクト: Elgedr/Python
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"
コード例 #4
0
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
コード例 #5
0
    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
コード例 #6
0
    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))
コード例 #7
0
 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)
コード例 #8
0
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")
コード例 #9
0
ファイル: system.py プロジェクト: king-tomi/Bank-system
    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()
コード例 #10
0
    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
コード例 #11
0
    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
コード例 #12
0
ファイル: test_bank.py プロジェクト: michal93cz/bank
 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
コード例 #13
0
    def fetchBankList(self):
        banks = []
        baseUrl = "http://creditcard.pingan.com/cms-tmplt/creditcard/searchPreferentialActivity.do?type=&city=shenzhen&currentPage=%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
コード例 #14
0
    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
コード例 #15
0
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()
コード例 #16
0
ファイル: test_money.py プロジェクト: as-chapa/tdd_python
 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)
コード例 #17
0
ファイル: test_money.py プロジェクト: as-chapa/tdd_python
 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)
コード例 #18
0
ファイル: ATM_test.py プロジェクト: jsalfity/bear_atm
    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)
コード例 #19
0
ファイル: ATM_test.py プロジェクト: jsalfity/bear_atm
    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, {})
コード例 #20
0
ファイル: test_investment.py プロジェクト: michal93cz/bank
 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)
コード例 #21
0
    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
コード例 #22
0
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'
コード例 #23
0
    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
コード例 #24
0
ファイル: market.py プロジェクト: Daxez/IRSMarket
    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)
コード例 #25
0
    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
コード例 #26
0
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)
コード例 #27
0
 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)
コード例 #28
0
    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("您还没开户!!")
コード例 #29
0
 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)
コード例 #30
0
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