Esempio n. 1
0
def main():
    print('===order a cup of coffee===')
    order_a_coffee(VendingMachine(3))
    print('===order two cup of coffee===')
    order_two_coffee(VendingMachine(3))
    print('===order a cup of coffee, but money is not correct===')
    order_coffe_but_not_correct_money(VendingMachine(3, 20))
    print('===eject money===')
    eject_money(VendingMachine(3))
    print('===eject money failed===')
    eject_money_fail(VendingMachine(3))
Esempio n. 2
0
def test_buy_product_returns_instance_when_valid():
    machine = VendingMachine()
    machine.insert_coin(coins.Toonie())
    machine.insert_coin(coins.Toonie())
    result = machine.buy_product(products.Drink)

    assert isinstance(result, products.Drink)
def main():

    SORT_DICTIONARY = {
        'n': 'item_name',
        'p': 'percent_sold',
        's': 'stock_required'
    }

    vendingMachineFileNames = [
        './REID_1F_20171004.json', './REID_2F_20171004.json',
        './REID_3F_20171004.json'
    ]
    vendingMachines = []

    for fileName in vendingMachineFileNames:
        jsonFile = open(fileName, 'r')
        machineData = json.loads(jsonFile.read())
        vendingMachines.append(VendingMachine(machineData))

    vendingMachineMgr = VendingMachineMgr(vendingMachines, SORT_DICTIONARY)

    reportType = input(
        'Would you like the (m)achine report or the (i)nventory report? ')

    if reportType == 'i':
        mainLoop(vendingMachineMgr, SORT_DICTIONARY)
    else:
        vendingMachineMgr.printInventory()
Esempio n. 4
0
def vending_machine_gen(price_list, additional_drinks):

    vending_machine = VendingMachine(price_list)
    for d in additional_drinks:
        vending_machine.add_drink(d)

    return vending_machine
Esempio n. 5
0
def test_get_balance_returns_sum_of_coins_minus_purchases():
    machine = VendingMachine()
    machine.insert_coin(coins.Toonie())
    machine.insert_coin(coins.Toonie())
    machine.buy_product(products.Candy)

    assert machine.get_balance() == 85
Esempio n. 6
0
 def test_half_dollar_and_quarter(self):
     fsm = VendingMachine()
     events = [Coin.half_dollar, Coin.quarter]
     fsm.start()
     for event in events:
         fsm.handle_event(event)
     self.assertEqual([fsm.start_state, fsm.dispensing], fsm.history)
     self.assertEqual(fsm.change, 0)
Esempio n. 7
0
 def test_dime_and_quarter(self):
     fsm = VendingMachine()
     events = [Coin.dime, Coin.quarter]
     fsm.start()
     for event in events:
         fsm.handle_event(event)
     self.assertEqual([fsm.start_state, fsm.got_10, fsm.dispensing],
                      fsm.history)
     self.assertEqual(fsm.change, 10)
Esempio n. 8
0
def test_inserted_coins_are_appended_to_coin_list():
    machine = VendingMachine()
    machine.insert_coin(coins.Loonie())
    machine.insert_coin(coins.Toonie())
    machine.insert_coin(coins.Quarter())

    assert machine.inserted_coins == [
        coins.Loonie(), coins.Toonie(),
        coins.Quarter()
    ]
Esempio n. 9
0
    def test_coin_less_product_not_change(self):
        one = 3
        five = 0
        ten = 0
        product = 1

        result = VendingMachine(one, five, ten, product)
        self.assertEqual(result['one'], 3)
        self.assertEqual(result['five'], 0)
        self.assertEqual(result['ten'], 0)
        self.assertEqual(result['status'], 1)
Esempio n. 10
0
    def test_not_product_not_change(self):
        one = 1
        five = 1
        ten = 1
        product = 4

        result = VendingMachine(one, five, ten, product)
        self.assertEqual(result['one'], 1)
        self.assertEqual(result['five'], 1)
        self.assertEqual(result['ten'], 1)
        self.assertEqual(result['status'], 1)
Esempio n. 11
0
    def test_coin_over_product_can_change_ten(self):
        one = 3
        five = 0
        ten = 2
        product = 1

        result = VendingMachine(one, five, ten, product)
        self.assertEqual(result['one'], 0)
        self.assertEqual(result['five'], 0)
        self.assertEqual(result['ten'], 1)
        self.assertEqual(result['status'], 0)
def main():
    vending_machine = VendingMachine()

    vending_machine.dispense_product()
    print()

    vending_machine.insert_money_and_select_product(3, 'Pepsi')
    print()

    vending_machine.insert_money_and_select_product(3, 'Fanta')
    print()
    vending_machine.dispense_product()
Esempio n. 13
0
 def test_four_nickels_and_quarter(self):
     fsm = VendingMachine()
     events = [
         Coin.nickel, Coin.nickel, Coin.nickel, Coin.nickel, Coin.quarter
     ]
     fsm.start()
     for event in events:
         fsm.handle_event(event)
     self.assertEqual([
         fsm.start_state, fsm.got_5, fsm.got_10, fsm.got_15, fsm.got_20,
         fsm.dispensing
     ], fsm.history)
     self.assertEqual(fsm.change, 20)
 def initialize_vending_machine(self):
     max_quantity = None
     cost_of_each_item = None
     for line in self.all_commands:
         if len(line) > 0 and (max_quantity is None or cost_of_each_item is None):
             values = list(map(lambda x: x.strip(), line.split(',')))
             match values[0]:
                 case 'maxquantity': max_quantity = int(values[1])
                 case 'costofeachitem': cost_of_each_item = int(values[1])
                 case _: pass
     
     if max_quantity is not None and cost_of_each_item is not None:
         self.vending_machine = VendingMachine(max_quantity, cost_of_each_item)
     else:
         print('Unable to initialize vending machine')
         exit(0)
Esempio n. 15
0
def main():
    seleccion = [3, 1, 4]

    producto1 = Producto(1, "Botella de Agua", 5, 1.00)
    producto2 = Producto(2, "Coca Cola", 10, 1.50)
    producto3 = Producto(3, "Papas Fritas", 7, 0.50)
    producto4 = Producto(4, "Chifles", 11, 1.25)
    producto5 = Producto(5, "Granola", 15, 2.50)

    productos = [producto1, producto2, producto3, producto4, producto5]

    vm1 = VendingMachine("Maquina Generica")
    cargaProductos(vm1, productos)
    verProductosDisponibles(vm1)

    venta(vm1, seleccion, 20.00)

    verProductosDisponibles(vm1)
Esempio n. 16
0
def main():
    vm = VendingMachine() 
    vm.add_product(Product("水", 100))
    vm.add_product(Product("ビール", 350))
    vm.add_product(Product("コーラ", 120))    

    for id, product in vm.products.items():
        print("%d) %s : %d 円" % (id, product.name, product.price))    
    id = int(input("購入する商品の番号を選んでください >> "))
    while(True):
        input_str = input("お金を入れてください(0で止まります) >> ")
        try:
            if(input_str == "0"):
                break
            currency = Currency(int(input_str))
        except ValueError as f:
            print("10, 50, 100, 500, 1000のどれかを指定してください。 ")
            continue
        vm.insert_money(currency)
        
    vm.buy(id)
    vm.return_change()
    print(f'現在の売り上げは{vm.profit}円です。')
Esempio n. 17
0
 def test_compra_chocolate_com_50_cents(self):
     maquina = VendingMachine()
     maquina.comprar("chocolate", 0.50) |should| equal_to (False)
Esempio n. 18
0
 def scope_function(self):
     self.vm = VendingMachine()
     yield
def machine():
    return VendingMachine()
Esempio n. 20
0
        try:
            action = int(
                input(
                    "What action would you like to take? (Enter the number): ")
            )

            if action < 1 or action > 5:
                print("Please enter a valid choice(1-5)")
                continue

            if action == 1:
                machine.refill()
            elif action == 2:
                machine.insert_coin()
            elif action == 3:
                machine.make_selection()
            elif action == 4:
                machine.cancel()
            elif action == 5:
                break

        except ValueError:
            print("Please enter a valid choice (1-4)")


if __name__ == '__main__':
    vending_machine = VendingMachine()
    vending_machine.refill()

    input_action(vending_machine)
Esempio n. 21
0
def test_get_balance_returns_sum_value_of_coins():
    machine = VendingMachine()
    machine.insert_coin(coins.Quarter())
    machine.insert_coin(coins.Loonie())

    assert machine.get_balance() == 125
Esempio n. 22
0
def test_buy_drink_with_insufficient_funds():
    machine = VendingMachine()
    with pytest.raises(InsufficientFunds):
        machine.buy_product(products.Drink)
Esempio n. 23
0
 def test_maquina_criada(self):
     maquina = VendingMachine()
     maquina.produtos.has_key('coca') |should| equal_to (True)
     maquina.produtos.has_key('fandangos') |should| equal_to (True)
     maquina.produtos.has_key('chetoos') |should_not| equal_to (True)
Esempio n. 24
0
 def test_compra_coca_com_2_dolares(self):
     maquina = VendingMachine()
     maquina.comprar("coca",2.0) |should| equal_to(True)
     maquina.troco |should| equal_to (1)
Esempio n. 25
0
 def test_compra_coca_com_1_dolar(self):
     maquina = VendingMachine()
     maquina.comprar("coca", 1.0) |should| equal_to (True)
Esempio n. 26
0
import os
from flask import Flask, request

from vending_machine import VendingMachine

vm = VendingMachine()

app = Flask(__name__)


@app.route('/api/load_json', methods=['POST'])
def load_json():
    json_data = eval(request.json.get('json_data'))
    if vm.load_stock(json_data):
        return {"result": "success"}
    else:
        return {"result": "failed"}


@app.route('/api/items', methods=['GET'])
def get_items():
    return {"items": vm.get_items()}


@app.route('/api/insert_money', methods=['POST'])
def insert_money():
    print(request.json)
    money = request.json.get('money')
    if vm.insert_money(money):
        return {"result": "success"}
    else:
 def setUp(self):
     self.machine = VendingMachine(0.5, 1.0, 0.65)
     pass
Esempio n. 28
0
 def test_maquina_tem_produto(self):
     maquina = VendingMachine()
     maquina.tem_produto("chocolate") |should| equal_to (False)
     maquina.tem_produto("coca") |should| equal_to (True)
Esempio n. 29
0
            action = " ".join(s[:3])
            args = s[3:]

            try:
                self.actions[action](*args)
            except:
                print(f"Unknown command '{s}'")
                sys.exit(1)


if __name__ == '__main__':
    exampleSnackbar = Snackbar("Python's Snackbar")
    exampleSnackbar.run()

    # create Vending Machines
    vm1 = VendingMachine("Food")
    vm2 = VendingMachine("Drink")

    # create Snacks
    s1 = Snack("Chips", 200, 1.00, vm1.getId())
    s2 = Snack("Chocolate Bar", 200, 1.00, vm1.getId())
    s3 = Snack("Pretzels", 200, 1.00, vm1.getId())

    s4 = Snack("Soda", 200, 1.00, vm2.getId())
    s5 = Snack("Water", 200, 1.00, vm2.getId())

    # 1. Customer 1 buys 3 of snack 4. Print Customer 1 Cash on hand. Print quantity of snack 4.
    print("\n--#1-----------")
    print(f"{c1.getName()}'s initial cash: {c1.getCash()}")

    print(c1.buyTotal(s4, 3))
Esempio n. 30
0
 def test_maquina_tem_chiclete(self):
     maquina = VendingMachine()
     maquina.tem_produto("chiclete") |should| equal_to (False)