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"))
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")
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')
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)
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")
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)
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)
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")
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'])
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])
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)
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])
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")
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'])
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")
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)
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")
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}?"))
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"))
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")
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"))
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")
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}")
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)
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")
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)
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"))