Exemplo n.º 1
0
def main():
    # Create connection to MongoDB
    db_setup.global_init()
    # Blue header
    print(Fore.BLUE, "Hotel service", Fore.RESET)
    # Call the function to show available commands
    commands()

    # Create instances of 3 classes
    apartments = ApartmentService()
    guests = GuestService()
    reservations = ReservationService()

    # Prompt user to choose action util exit
    while True:
        # Call the function and assign the command from user to the variable
        action = get_action()
        # Pass the variable to the function to execute functions from imports
        with switch(action) as s:
            # All commands from user get appropriate functionality
            # Call imported functions from class instances
            s.case('l', apartments.apartments_list)
            s.case('a', apartments.add_apartment)
            s.case('s', apartments.search_apartment)

            s.case('v', guests.guest_list)
            s.case('g', guests.add_guest)

            s.case('b', reservations.view_reservations)
            s.case('m', reservations.add_reservations)

            s.case('?', commands)
            s.case('e', exit)

            s.default(lambda: print("This is unknown command"))
Exemplo n.º 2
0
    def test_multiple_values_one_case_list(self):
        with switch(6) as s:
            s.case([1, 3, 5, 7], lambda: "odd")
            s.case([0, 2, 4, 6, 8], lambda: "even")
            s.default(lambda: 'default')

        self.assertEqual(s.result, "even")
Exemplo n.º 3
0
    def test_none_as_valid_case(self):
        with switch(None) as s:
            s.case(1, lambda: 'one')
            s.case(None, lambda: 'none')
            s.default(lambda: "default")

        self.assertEqual(s.result, 'none')
Exemplo n.º 4
0
    def test_return_value_from_case(self):
        value = 4
        with switch(value) as s:
            s.case([1, 3, 5, 7], lambda: value + 1)
            s.case([0, 2, 4, 6, 8], lambda: value * value)
            s.default(lambda: 0)

        self.assertEqual(s.result, 16)
 def controlFlow(self, currentState):
     with switch(currentState) as s:
         s.case(State.PB_IS_EMPTY, self.checkPbISEmpty)
         s.case(State.GET_ENTITY, self.getEntity)
         s.case(State.GENREATE_INDEX_PB, self.genreateToIndexPb)
         s.case(State.INDEX_PB, self.indexPb)
         s.case(State.DONE, self.done)
         s.default(self.done)
 def controlFlow(self, currentState):
     with switch(currentState) as s:
         s.case(State.CHECK_TABLE_NAME, self.checkTableNameIsEmpty)
         s.case(State.GET_KEY_SCHEMA, self.keySchema)
         s.case(State.GET_ATTRIBUTE_TYPE, self.attributeType)
         s.case(State.CREATE_TABLE, self.createTable)
         s.case(State.DONE, self.done)
         s.default(self.done)
Exemplo n.º 7
0
    def test_default_passthrough(self):
        value = 11
        with switch(value) as s:
            s.case(1, lambda: '1')
            s.case(2, lambda: '2')
            s.default(lambda: 'default')

        self.assertEqual(s.result, "default")
Exemplo n.º 8
0
 def controlFlow(self, currentState):
     with switch(currentState) as s:
         s.case(State.CHECK_IS_REQ_EMPTY, self.checkReqEmpty)
         s.case(State.CHECK_TYPE_OF_REQ_METHOD, self.checkTypeOfMethod)
         s.case(State.IF_GET_CHECK_REQ_JSON, self.checkIsJsonAndValid)
         s.case(State.COVERT_TO_UIPB, self.convertToUipb)
         s.case(State.DO_WORK, self.doWork)
         s.case(State.RETURN_RESPONSE, self.returnResponse)
         s.default(self.done)
Exemplo n.º 9
0
 def controlFlow(self, currentState):
     with switch(currentState) as s:
         s.case(State.CHECK_PB_IS_EMPTY, self.checkpbisEmpty)
         s.case(State.GET_PB, self.getPb)
         s.case(State.COMPARE_PBS, self.comparePbs)
         s.case(State.CALL_UPDATE_LISTNER, self.callUpdateListner)
         s.case(State.GET_ENTITY, self.getEntity)
         s.case(State.DONE, self.done)
         s.default(self.done)
 def controlFlow(self, currentState):
     with switch(currentState) as s:
         s.case(State.CHECK_TABLE_IS_EMPTY, self.checkDominNameIsEmpty)
         s.case(State.ID_IS_EMPTY, self.idIsEmpty)
         s.case(State.GET_ATTRIBUTES, self.getAttribute)
         s.case(State.DECODE_DATA, self.decodeData)
         s.case(State.GENREATE_PB, self.genreatePb)
         s.case(State.DONE, self.done)
         s.default(self.done)
Exemplo n.º 11
0
    def test_has_matched_case_int(self):
        value = 7
        with switch(value) as s:
            s.case(1, lambda: "one")
            s.case(5, lambda: "five")
            s.case(7, lambda: "seven")
            s.default(lambda: 'default')

        self.assertEqual(s.result, "seven")
Exemplo n.º 12
0
    def test_fallthrough_simple(self):
        visited = []
        value = 2
        with switch(value) as s:
            s.case(1, lambda: visited.append(1) or 1)
            s.case(2, lambda: visited.append(2) or 2, fallthrough=True)
            s.default(lambda: visited.append('default') or 'default')

        self.assertEqual(s.result, "default")
        self.assertEqual(visited, [2, 'default'])
Exemplo n.º 13
0
    def test_fallthrough_some_list(self):
        visited = []
        value = 5
        with switch(value) as s:
            s.case([1, 2, 3], lambda: visited.append(1) or 1)
            s.case([4, 5, 6], lambda: visited.append(4) or 4, fallthrough=True)
            s.case([7, 8, 9], lambda: visited.append(7) or 7)
            s.default(lambda: visited.append('default') or 'default')

        self.assertEqual(s.result, 7)
        self.assertEqual(visited, [4, 7])
Exemplo n.º 14
0
    def test_has_matched_case_object(self):
        t1 = TestKeyObject()
        t2 = TestKeyObject()
        t3 = TestKeyObject()

        with switch(t2) as s:
            s.case(t1, lambda: t1)
            s.case(t2, lambda: t2)
            s.case(t3, lambda: t3)
            s.default(lambda: None)

        self.assertEqual(s.result, t2)
Exemplo n.º 15
0
    def test_fallthrough_middle_then_stop(self):
        visited = []
        value = 3
        with switch(value) as s:
            s.case(1, lambda: visited.append(1) or 1)
            s.case(2, lambda: visited.append(2) or 2, fallthrough=True)
            s.case(3, lambda: visited.append(3) or 3, fallthrough=True)
            s.case(4, lambda: visited.append(4) or 4)
            s.case(5, lambda: visited.append(5) or 5)
            s.default(lambda: visited.append('default') or 'default')

        self.assertEqual(s.result, 4)
        self.assertEqual(visited, [3, 4])
Exemplo n.º 16
0
    def test_closed_range(self):
        for value in [1, 2, 3, 4, 5]:
            with switch(value) as s:
                s.case(closed_range(1, 5), lambda: "1-to-5")
                s.case(closed_range(6, 7), lambda: "6")
                s.default(lambda: 'default')

            self.assertEqual(s.result, "1-to-5")

        with switch(0) as s:
            s.case(closed_range(1, 5), lambda: "1-to-5")
            s.case(closed_range(6, 7), lambda: "6")
            s.default(lambda: 'default')

        self.assertEqual(s.result, "default")

        with switch(6) as s:
            s.case(closed_range(1, 5), lambda: "1-to-5")
            s.case(closed_range(6, 7), lambda: "6")
            s.default(lambda: 'default')

        self.assertEqual(s.result, "6")
Exemplo n.º 17
0
    def test_fallthrough__no_match_but_not_hit(self):
        visited = []
        value = 'gone'
        with switch(value) as s:
            s.case(1, lambda: visited.append(1) or 1)
            s.case(2, lambda: visited.append(2) or 2, fallthrough=True)
            s.case(3, lambda: visited.append(3) or 3, fallthrough=True)
            s.case(4, lambda: visited.append(4) or 4)
            s.case(5, lambda: visited.append(5) or 5)
            s.default(lambda: visited.append('default') or 'default')

        self.assertEqual(s.result, 'default')
        self.assertEqual(visited, ['default'])
Exemplo n.º 18
0
    def test_multiple_values_one_case_range(self):
        for value in range(1, 5):
            with switch(value) as s:
                s.case(range(1, 6), lambda: "1-to-5")
                s.case(range(6, 7), lambda: "6")
                s.default(lambda: 'default')

            self.assertEqual(s.result, "1-to-5")

        for value in range(6, 7):
            with switch(value) as s:
                s.case(range(1, 6), lambda: "1-to-5")
                s.case(range(6, 7), lambda: "6")
                s.default(lambda: 'default')

            self.assertEqual(s.result, "6")

        with switch(7) as s:
            s.case(range(1, 6), lambda: "1-to-5")
            s.case(range(6, 7), lambda: "6")
            s.default(lambda: 'default')

        self.assertEqual(s.result, "default")
Exemplo n.º 19
0
    def test_none_as_valid_case(self):
        value = None
        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        with switch(value) as s:
            s.case(1, lambda: get_set_case(1))
            s.case(None, lambda: get_set_case(None))
            s.default(lambda: get_set_case("default"))

        self.assertEqual(executed_case, None)
Exemplo n.º 20
0
    def test_default_passthrough(self):
        value = 11
        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        with switch(value) as s:
            s.case(1, lambda: get_set_case(1))
            s.case(2, lambda: get_set_case(2))
            s.default(lambda: get_set_case("default"))

        self.assertEqual(executed_case, "default")
Exemplo n.º 21
0
def main():
    while True:
        text = input("Enter a number 1 -> 4 (blank to exit) ")
        if not text:
            print("Later...")
            break

        num = int(text)

        with switch(num) as s:
            s.case(1, lambda: print("One is fun"))
            s.case(2, lambda: print("Two times better"))
            s.case(3, lambda: print("Three's a crowd"))
            s.case(4, lambda: print("Four is fine"))
            s.default(lambda: print(f"What's up with {num}?"))
Exemplo n.º 22
0
def main():
    show_command()

    while True:
        action = get_action()

        with switch(action) as s:
            s.case('b', books_list)
            s.case('i', book_info)
            s.case('r', add_book)
            s.case('l', view_writers)
            s.case('w', add_writer)
            s.case('?', show_command)
            s.case('e', exit)
            s.default(lambda: print("Sorry? Enter True Command"))
Exemplo n.º 23
0
    def test_multiple_values_one_case_list(self):
        value = 6

        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        with switch(value) as s:
            s.case([1, 3, 5, 7], lambda: get_set_case("odd"))
            s.case([0, 2, 4, 6, 8], lambda: get_set_case("even"))
            s.default(lambda: get_set_case('default'))

        self.assertEqual(executed_case, "even")
Exemplo n.º 24
0
def main():
    print(Fore.GREEN, "Books world", Fore.WHITE)
    show_commands()

    while True:
        action = get_action()

        with switch(action) as s:
            s.case("b", books_list)
            s.case("i", get_book_info)
            s.case("r", add_book)
            s.case("l", view_writers)
            s.case("w", add_writer)
            s.case("?", show_commands)
            s.case("e", exit)
            s.default(lambda: print("Sorry, this is unknown command"))
Exemplo n.º 25
0
    def test_has_matched_case_int(self):
        value = 7

        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        with switch(value) as s:
            s.case(1, lambda: get_set_case("one"))
            s.case(5, lambda: get_set_case("five"))
            s.case(7, lambda: get_set_case("seven"))
            s.default(lambda: get_set_case('default'))

        self.assertEqual(executed_case, "seven")
Exemplo n.º 26
0
def main():
    while True:

        text = input("Enter a number between 1 & 4: ")
        if not text:
            print("Later!")
            break

        num = int(text)

        with switch(num) as s:
            s.case(1, lambda: print("One is fun!"))
            s.case(2, lambda: print("2 * 2 = 4"))
            s.case(3, lambda: print("Three and free."))
            s.case(4, lambda: print("4 more!"))
            s.case(closed_range(10, 20), lambda: num * num)
            s.default(lambda: print(f"Say what? {num}."))

        print(f"Done and got {s.result}")
Exemplo n.º 27
0
    def test_has_matched_case_object(self):
        t1 = TestKeyObject()
        t2 = TestKeyObject()
        t3 = TestKeyObject()
        value = t2

        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        with switch(value) as s:
            s.case(t1, lambda: get_set_case(t1))
            s.case(t2, lambda: get_set_case(t2))
            s.case(t3, lambda: get_set_case(t3))
            s.default(lambda: get_set_case(None))

        self.assertEqual(executed_case, t2)
Exemplo n.º 28
0
    def test_multiple_values_one_case_range(self):
        value = 7

        executed_case = None

        def get_set_case(val):
            nonlocal executed_case
            executed_case = val

        # I'm a little unsure what is the right way to handle this
        # On one hand, reading case(range(1,5)) seems like it should
        # include 1, 2, 3, 4, 5.
        # But list(range(1,5)) is [1,2,3,4]. So that would be inconsistent.
        # Thoughts?
        # I'm going with 1,2,3,4,5 for range(1,5) for now.
        with switch(value) as s:
            s.case(range(1, 5), lambda: get_set_case("1-to-5"))
            s.case(range(6, 7), lambda: get_set_case("6-to-7"))
            s.default(lambda: get_set_case('default'))

        self.assertEqual(executed_case, "6-to-7")
Exemplo n.º 29
0
def dispatch(
    request,
    main_class=PageNotFoundView,
    cms_class=PageNotFoundView,
    short_class=PageNotFoundView,
    **kwargs,
):
    """
    Delegate to the correct class based on the current site.

    This helper view allows the user to delegate the request to the correct class based
    on the current site. This allows for different apps with their own needs to "share"
    URLs when appropriate.

    Each of the "_class" params corresponds to a view class for the desired app.
    """
    with switch(request.site.domain) as app:
        app.case(settings.FULL_DOMAINS, lambda: main_class)
        app.case(settings.SHORT_DOMAINS, lambda: short_class)
        app.default(lambda: cms_class)

    return app.result.as_view()(request, **kwargs)
Exemplo n.º 30
0
def main():
    db_setup.global_init()

    print(Fore.BLUE, "Hotel service", Fore.RESET)
    commands()

    apartments = Apartment_service()
    guests = Guest_service()
    reservations = Reservation_service()

    while True:
        action = get_action()
        with switch(action) as s:
            s.case('l', apartments.apartments_list)
            s.case('a', apartments.add_apartment)
            s.case('s', apartments.search_apartment)
            s.case('v', guests.guest_list)
            s.case('g', guests.add_guest)
            s.case('b', reservations.reservation_list)
            s.case('m', reservations.add_reservation)
            s.case('?', commands)
            s.case('e', exit)
            s.default(lambda: print("Sorry, this is unknown command"))