From 1c04b3a094eb4cd4f7b67bbdab6e2f382d132762 Mon Sep 17 00:00:00 2001 From: DIOD Date: Wed, 1 Nov 2023 18:53:30 +0100 Subject: [PATCH] Image Added into Industrial_developed_hangman readme --- .../Data/local_words.txt | 200 ++++++++++++++++++ .../Data/text_images.txt | 16 ++ Industrial_developed_hangman/README.md | 5 + Industrial_developed_hangman/recorces/img.png | Bin 0 -> 42763 bytes .../tests/__init__.py | 0 .../tests/test_hangman/__init__.py | 0 .../tests/test_hangman/test_main.py | 105 +++++++++ 7 files changed, 326 insertions(+) create mode 100644 Industrial_developed_hangman/Data/local_words.txt create mode 100644 Industrial_developed_hangman/Data/text_images.txt create mode 100644 Industrial_developed_hangman/recorces/img.png create mode 100644 Industrial_developed_hangman/tests/__init__.py create mode 100644 Industrial_developed_hangman/tests/test_hangman/__init__.py create mode 100644 Industrial_developed_hangman/tests/test_hangman/test_main.py diff --git a/Industrial_developed_hangman/Data/local_words.txt b/Industrial_developed_hangman/Data/local_words.txt new file mode 100644 index 00000000000..ba958fe23e4 --- /dev/null +++ b/Industrial_developed_hangman/Data/local_words.txt @@ -0,0 +1,200 @@ +jam +veteran +environmental +sound +make +first-hand +disposition +handy +dance +expression +take +professor +swipe +publisher +tube +thread +paradox +bold +feeling +seal +medicine +ancestor +designer +sustain +define +stomach +minister +coffee +disorder +cow +clash +sector +discount +anger +nationalist +cater +mole +speculate +far +retirement +rub +sample +contribution +distance +palace +holiday +native +debut +steak +tired +pump +mayor +develop +cool +economics +prospect +regular +suntan +husband +praise +rule +soprano +secular +interactive +barrel +permanent +childish +ministry +rank +ball +difficult +linger +comfortable +education +grief +check +user +fish +catch +aquarium +photograph +aisle +justice +preoccupation +liberal +diagram +disturbance +separation +concentration +tidy +appointment +fling +exception +gutter +nature +relieve +illustrate +bathtub +cord +bus +divorce +country +mountain +slump +acquit +inn +achieve +bloodshed +bundle +spell +petty +closed +mud +begin +robot +chorus +prison +lend +bomb +exploration +wrist +fist +agency +example +factory +disagreement +assault +absolute +consider +sign +raw +flood +definition +implication +judge +extraterrestrial +corn +breakfast +shelter +buffet +seize +credit +hardship +growth +velvet +application +cheese +secretion +loop +smile +withdrawal +execute +daughter +quota +deny +defeat +knee +brain +packet +ignorance +core +stumble +glide +reign +huge +position +alive +we +gate +replacement +mourning +incapable +reach +rehearsal +profile +fax +sit +compete +smart +gradient +tough +house +pocket +spider +ditch +critical +ignorant +policy +experience +exhibition +forum +contribution +wrestle +cave +bet +stool +store +formal +basketball +journal diff --git a/Industrial_developed_hangman/Data/text_images.txt b/Industrial_developed_hangman/Data/text_images.txt new file mode 100644 index 00000000000..06338355b18 --- /dev/null +++ b/Industrial_developed_hangman/Data/text_images.txt @@ -0,0 +1,16 @@ +╔══╗─╔╗╔╗╔══╗╔═══╗─╔══╗╔╗╔╗╔╗╔╗╔══╗ +║╔╗║─║║║║║╔═╝║╔══╝─║╔╗║║║║║║║║║║╔╗║ +║╚╝╚╗║║║║║║──║╚══╗─║║║║║║║║║║║║║╚╝║ +║╔═╗║║║╔║║║──║╔══╝─║║║║║║╔║║║║║║╔╗║ +║╚═╝║║╚╝║║╚═╗║╚══╗╔╝║║║║╚╝║║╚╝║║║║║ +╚═══╝╚══╝╚══╝╚═══╝╚═╝╚╝╚══╝╚══╗╚╝╚╝ + ⡖⠒⢒⣶⠖⠒⠒⠒⡖⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡇⣠⠟⠁⠀⠀⠀⡖⠓⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡿⠉⠀⠀⠀⠀⠀⢹⣞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡇⠀⠀⠀⠀⠀⣠⠻⡟⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀ ⡇⠀⠀⠀⠀⠐⠃⢨⡧⠀⠳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⠠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⢨⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⠆⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠈⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⠧⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤ diff --git a/Industrial_developed_hangman/README.md b/Industrial_developed_hangman/README.md index 60147752200..71fb5bd5724 100644 --- a/Industrial_developed_hangman/README.md +++ b/Industrial_developed_hangman/README.md @@ -4,4 +4,9 @@ to install dependencies got to repository "Industrial_developed_hangman" by `cd to start it use `make build` command +example of programm run: + + +![img.png](recorces/img.png) + also makefile have lint command to lint source code \ No newline at end of file diff --git a/Industrial_developed_hangman/recorces/img.png b/Industrial_developed_hangman/recorces/img.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9930e1d230194900cf7c7b1aaf7edd25866963 GIT binary patch literal 42763 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 None: + self.container: List[str] = [] + + def __call__(self, value_to_print: str) -> None: + self.container.append(str(value_to_print)) + + +class FkInput(object): + def __init__(self, values_to_input: List[str]) -> None: + self.values_to_input: List[str] = values_to_input + + def __call__(self) -> str: + return self.values_to_input.pop(0) + + +@pytest.fixture +def choice_fn() -> Callable: + return lambda array: array[0] # noqa: E731 + + +def test_parse_word_from_local() -> None: + assert isinstance(parse_word_from_local(), str) + + +def test_parse_word_from_local_error() -> None: + data_path = Path(os.path.abspath('')) / 'Data' + real_name = 'local_words.txt' + time_name = 'local_words_not_exist.txt' + + os.rename(data_path / real_name, data_path / time_name) + with pytest.raises(FileNotFoundError): + parse_word_from_local() + os.rename(data_path / time_name, data_path / real_name) + + +@pytest.mark.internet_required +def test_parse_word_from_site() -> None: + assert isinstance(parse_word_from_site(), str) + + +def test_parse_word_from_site_no_internet() -> None: + with requests_mock.Mocker() as mock: + mock.get('https://randomword.com', text='
some text
') + assert parse_word_from_site() == 'some text' + + +def test_parse_word_from_site_err() -> None: + with pytest.raises(RuntimeError): + parse_word_from_site(url='https://www.google.com/dsfsdfds/sdfsdf/sdfds') + + +def test_get_word(choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(['none']) + main_process = MainProcess(Source(1), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + + assert isinstance(main_process.get_word(), str) + + +def test_start_game_win(choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(['j', 'a', 'm']) + main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + + main_process.start_game() + + assert 'YOU WON' in fk_print.container[-1] + + +@pytest.mark.parametrize('input_str', [[letter] * 10 for letter in 'qwertyuiopasdfghjklzxcvbnm']) # noqa: WPS435 +def test_start_game_loose(input_str: List[str], choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(input_str) + main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + + main_process.start_game() + + assert 'YOU LOST' in fk_print.container[-1] + + +def test_wow_year(freezer, choice_fn: Callable) -> None: + freezer.move_to('2135-10-17') + fk_print = FkPrint() + fk_input = FkInput(['none'] * 100) # noqa: WPS435 + main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + + main_process.start_game() + + assert 'this program' in fk_print.container[0]