diff --git a/context_manager/answers/change_directory.py b/context_manager/answers/change_directory.py
new file mode 100644
index 0000000..8c8ac62
--- /dev/null
+++ b/context_manager/answers/change_directory.py
@@ -0,0 +1,30 @@
+import os
+from contextlib import contextmanager
+
+
+def change_dir_without_context_manager(filename1, filename2):
+ cwd = os.getcwd()
+ os.chdir(filename1)
+ a = os.listdir()
+ os.chdir(cwd)
+
+ cwd = os.getcwd()
+ os.chdir(filename2)
+ b = os.listdir()
+ os.chdir(cwd)
+ return a + b
+
+
+@contextmanager
+def change_dir(filename):
+ try:
+ cwd = os.getcwd()
+ os.chdir(filename)
+ yield
+ finally:
+ os.chdir(cwd)
+
+
+def try_change_dir(filename):
+ with change_dir(filename):
+ return os.listdir()
diff --git a/context_manager/answers/context_manager.py b/context_manager/answers/context_manager.py
deleted file mode 100644
index 45115fd..0000000
--- a/context_manager/answers/context_manager.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import os
-from contextlib import contextmanager
-
-def simple_open_and_write_without_context_manager(filename):
- f = open(filename ,'w')
- f.write('simple open and write done!')
- f.close()
- if(f.closed):
- return True
- else:
- return False
-
-def simple_open_and_write_with_context_manager(filename):
- with open(filename, 'w') as f:
- f.write('write with context manager done!')
- if(f.closed):
- return True
- else:
- return False
-
-
-@contextmanager
-def open_file(file, mode):
- f = open(file, mode)
- yield f
- f.close()
-
-def check_open_file(filename):
- with open_file(filename, 'w') as f:
- f.write('Lorem ipsum dolor sit amet, consectetur adipiscing elit.')
- if(f.closed):
- return True
- else:
- return False
-
-
-def change_dir_without_context_manager(filename1, filename2):
- cwd = os.getcwd()
- os.chdir(filename1)
- a = os.listdir()
- os.chdir(cwd)
-
- cwd = os.getcwd()
- os.chdir(filename2)
- b = os.listdir()
- os.chdir(cwd)
- return a + b
-
-@contextmanager
-def change_dir(filename):
- try:
- cwd = os.getcwd()
- os.chdir(filename)
- yield
- finally:
- os.chdir(cwd)
-
-def try_change_dir(filename):
- with change_dir(filename):
- return os.listdir()
-
-def read_file(filename):
- with open(filename, 'r') as f:
- for line in f:
- return format(line)
-
-simple_open_and_write_without_context_manager('first.txt')
-simple_open_and_write_with_context_manager('second.txt')
-check_open_file('third.txt')
-print(change_dir_without_context_manager('file_one','file_two'))
-print(change_dir_without_context_manager('file_one','file_one'))
-print(change_dir_without_context_manager('file_two','file_two'))
-print(try_change_dir('file_one'))
-print(try_change_dir('file_two'))
-read_file('first.txt')
-read_file('second.txt')
-read_file('third.txt')
diff --git a/context_manager/answers/context_manager_as_class.py b/context_manager/answers/context_manager_as_class.py
new file mode 100644
index 0000000..9058cc9
--- /dev/null
+++ b/context_manager/answers/context_manager_as_class.py
@@ -0,0 +1,17 @@
+class File(object):
+ def __init__(self, file_name, method):
+ self.file_obj = open(file_name, method)
+ def __enter__(self):
+ return self.file_obj
+ def __exit__(self, type, value, traceback):
+ self.file_obj.close()
+
+def check(filename):
+ with File(filename, 'w') as opened_file:
+ opened_file.write('Yeah! You can write context manager as class)')
+
+
+def read_file(filename):
+ with open(filename, 'r') as f:
+ for line in f:
+ return format(line)
\ No newline at end of file
diff --git a/context_manager/change_directory.py b/context_manager/change_directory.py
new file mode 100644
index 0000000..293fd34
--- /dev/null
+++ b/context_manager/change_directory.py
@@ -0,0 +1,33 @@
+import os
+from contextlib import contextmanager
+
+
+def change_dir_without_context_manager(filename1, filename2):
+ """
+ Changes directory from pwd to pwd/filename.
+ :param filename1: name of first folder
+ :param filename2: name of second folder
+ :return: list if files in filename1 and filename2
+ """
+
+
+"""
+With context manager.
+"""
+
+
+@contextmanager
+def change_dir(filename):
+ """
+ Changes directory from pwd to pwd/filename.
+ :param filename: name of folder
+ """
+
+
+def try_change_dir(filename):
+ """
+ Uses change_dir().
+ :param filename: name of folder
+ :return: list of files in folder
+ """
+
diff --git a/context_manager/context_manager_as_class.py b/context_manager/context_manager_as_class.py
new file mode 100644
index 0000000..8759b18
--- /dev/null
+++ b/context_manager/context_manager_as_class.py
@@ -0,0 +1,16 @@
+class File(object):
+ """
+ Context manager class with '__init__', '__enter__', '__exit__' methods that opens and closes file.
+ """
+
+def check(filename):
+ """
+ Writes 'Yeah! You can write context manager as class)') into filename with File class.
+ :param filename: txt file
+ """
+
+
+def read_file(filename):
+ with open(filename, 'r') as f:
+ for line in f:
+ return format(line)
\ No newline at end of file
diff --git a/context_manager/first.txt b/context_manager/first.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/context_manager/instruction.md b/context_manager/instruction.md
index 234b424..52a3eb7 100644
--- a/context_manager/instruction.md
+++ b/context_manager/instruction.md
@@ -2,7 +2,7 @@
1. Look at the file write_into_file.py
-2. Look at the tests in tests folter
+2. Look at the tests in tests folder
3. Run tests with command:
@@ -18,4 +18,22 @@
7. Congratulations, you have passed first level. Commit and push your changes.
-### LEVEL-2
\ No newline at end of file
+### LEVEL-2
+
+1. Look at the file change_directory.py
+
+2. Look at the test_change_directory.py in tests folder
+
+3. Run tests with command:
+
+ ```python3 -m unittest tests/test_change_directory.py```
+
+ As you see all your tests are failed
+
+4. Now, complete the functions in change_directory.py
+
+5. Run tests and all of them should be passed.
+
+6. Compare your answer with mine located in answers/change_directory.py
+
+7. Congratulations, you have passed second level. Commit and push your changes.
\ No newline at end of file
diff --git a/context_manager/second.txt b/context_manager/second.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/context_manager/tests/test_change_directory.py b/context_manager/tests/test_change_directory.py
new file mode 100644
index 0000000..10f96d2
--- /dev/null
+++ b/context_manager/tests/test_change_directory.py
@@ -0,0 +1,27 @@
+from unittest import TestCase
+from change_directory import (
+ change_dir_without_context_manager,
+ try_change_dir
+)
+
+class ContextManagerTest(TestCase):
+ def test_change_dir_without(self):
+ result = change_dir_without_context_manager('file_one','file_two')
+ self.assertEqual(result, ['love.txt', 'context.txt', 'I.txt', 'manager.txt', 'love.txt', 'and.txt', 'I.txt', 'beshbarmak.txt'])
+
+ def test_change_dir_without1(self):
+ result = change_dir_without_context_manager('file_one', 'file_one')
+ self.assertEqual(result, ['love.txt', 'context.txt', 'I.txt', 'manager.txt', 'love.txt', 'context.txt', 'I.txt', 'manager.txt'])
+
+ def test_change_dir_without2(self):
+ result = change_dir_without_context_manager('file_two', 'file_two')
+ self.assertEqual(result, ['love.txt', 'and.txt', 'I.txt', 'beshbarmak.txt', 'love.txt', 'and.txt', 'I.txt', 'beshbarmak.txt'])
+
+
+ def test_change_dir_with(self):
+ result = try_change_dir('file_one')
+ self.assertEqual(result, ['love.txt', 'context.txt', 'I.txt', 'manager.txt'])
+
+ def test_change_dir_with1(self):
+ result = try_change_dir('file_two')
+ self.assertEqual(result,['love.txt', 'and.txt', 'I.txt', 'beshbarmak.txt'])
\ No newline at end of file
diff --git a/context_manager/tests/test_context_manager_as_class.py b/context_manager/tests/test_context_manager_as_class.py
new file mode 100644
index 0000000..9ee9031
--- /dev/null
+++ b/context_manager/tests/test_context_manager_as_class.py
@@ -0,0 +1,11 @@
+from unittest import TestCase
+from context_manager_as_class import (
+ check,
+ read_file
+)
+
+class LevelOneTest(TestCase):
+ def test_write_with1(self):
+ check('first.txt')
+ result = read_file('first.txt')
+ self.assertEqual(result, 'Yeah! You can write context manager as class)')
\ No newline at end of file
diff --git a/context_manager/tests/test_write_into_file.py b/context_manager/tests/test_write_into_file.py
index 20890e2..5eef53e 100644
--- a/context_manager/tests/test_write_into_file.py
+++ b/context_manager/tests/test_write_into_file.py
@@ -6,7 +6,11 @@
read_file
)
+<<<<<<< HEAD
class LevelOneTest(TestCase):
+=======
+class LevelTwoTest(TestCase):
+>>>>>>> cdb42cc1efb71900fdcfa9b0e9831c25313b30ee
def test_write_without(self):
result = write_without_context_manager('first.txt')
self.assertEqual(result, True)
diff --git a/context_manager/third.txt b/context_manager/third.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/context_manager/write_into_file.py b/context_manager/write_into_file.py
index b74f912..6e79b0e 100644
--- a/context_manager/write_into_file.py
+++ b/context_manager/write_into_file.py
@@ -41,4 +41,4 @@ def check_open_file(filename):
def read_file(filename):
with open(filename, 'r') as f:
for line in f:
- return format(line)
\ No newline at end of file
+ return format(line)
diff --git a/docs/build/doctrees/context_manager.doctree b/docs/build/doctrees/context_manager.doctree
index cd44120..a19d8c7 100644
Binary files a/docs/build/doctrees/context_manager.doctree and b/docs/build/doctrees/context_manager.doctree differ
diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle
index 4a7f457..d2674eb 100644
Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ
diff --git a/docs/build/html/_sources/context_manager.rst.txt b/docs/build/html/_sources/context_manager.rst.txt
index 829d996..8602bf2 100644
--- a/docs/build/html/_sources/context_manager.rst.txt
+++ b/docs/build/html/_sources/context_manager.rst.txt
@@ -24,10 +24,36 @@ or as class by using magic functions::
We want you to pass three levels for a better understanding of **context manager**
+<<<<<<< HEAD
LEVEL-1
-------
+=======
+Context manager as class
+------------------------
+
+1. Look at the file context_manager_as_class.py
+
+2. Look at the test_context_manager_as_class.py in tests folder
+
+3. Run tests with command::
+
+ python3 -m unittest tests/test_context_manager_as_class.py
+
+ As you see all your tests are failed
+
+4. Now, complete the functions in context_manager_as_class.py
+
+5. Run tests and all of them should be passed.
+
+6. Compare your answer with mine located in answers/change_directory.py
+
+7. Congratulations, you have passed first level. Commit and push your changes.
+
+Write into file
+---------------
+>>>>>>> cdb42cc1efb71900fdcfa9b0e9831c25313b30ee
1. Look at the file write_into_file.py
@@ -35,7 +61,11 @@ LEVEL-1
3. Run tests with command::
+<<<<<<< HEAD
python3 -m unittest tests/tests_for_level_one.py
+=======
+ python3 -m unittest tests/tests_write_into_file.py
+>>>>>>> cdb42cc1efb71900fdcfa9b0e9831c25313b30ee
As you see all your tests are failed
@@ -47,6 +77,28 @@ LEVEL-1
7. Congratulations, you have passed first level. Commit and push your changes.
+<<<<<<< HEAD
LEVEL-2
-------
+=======
+Change directory
+----------------
+1. Look at the file change_directory.py
+
+2. Look at the test_change_directory.py in tests folder
+
+3. Run tests with command::
+
+ python3 -m unittest tests/test_change_directory.py
+
+ As you see all your tests are failed
+
+4. Now, complete the functions in change_directory.py
+
+5. Run tests and all of them should be passed.
+
+6. Compare your answer with mine located in answers/change_directory.py
+
+7. Congratulations, you have passed second level. Commit and push your changes.
+>>>>>>> cdb42cc1efb71900fdcfa9b0e9831c25313b30ee
diff --git a/docs/build/html/context_manager.html b/docs/build/html/context_manager.html
index 7228de1..a6ba890 100644
--- a/docs/build/html/context_manager.html
+++ b/docs/build/html/context_manager.html
@@ -85,7 +85,7 @@
Decorators
Context manager
@@ -171,31 +171,73 @@ Context manager