Skip to content
Snippets Groups Projects
Commit 66c22158 authored by Sven Graupner's avatar Sven Graupner
Browse files

rename C_numbers to C_expressions

parent 2f2df7b7
No related branches found
No related tags found
No related merge requests found
......@@ -2,8 +2,10 @@
"code-runner.clearPreviousOutput": true,
"python.testing.unittestArgs": [
"-v",
"-s", "./C_numbers",
"-p", "test_*.py"
"-s",
"./C_expressions",
"-p",
"test_*.py"
],
"python.testing.pytestEnabled": false,
"python.testing.unittestEnabled": true
......
import os
"""
__init__.py marks a directory as a Python package. It is executed
when the package is imported.
It is also needed for the Python test runner to discover tests for VS Code.
Special file __init__.py marks a directory as a Python package.
A Python Package is a collection of Python modules with an
__init__.py File. The file is executed when the package is imported.
The file is also needed for VS Code test runner to discover tests.
"""
def package_dir(file):
"""
Return name of this package, which is the name of its directory.
Return name of directory of this package.
"""
path = os.path.normpath(file).split(os.sep)
return path[len(path)-2] # e.g. "C_numbers"
def project_dir(file):
def project_path(file):
"""
Return path to project directory.
"""
......@@ -31,5 +32,8 @@ def import_sol_module(file):
return __import__(sol_module, globals(), locals(), [], 0)
# name of this package directory
PACKAGE_DIR = package_dir(__file__)
PROJECT_DIR = project_dir(__file__)
# path to project directory, in which this module resides
PROJECT_PATH = project_path(__file__)
from __init__ import import_sol_module
class Numbers:
class Expressions:
""""
Class for the assignment. Fill in one-line expressions (no own functions)
to initialize values self.b .. self.k with specified values.
Use Python built-in functions, list expressions and list comprhension,
but NO own functions.
Use Python built-in functions, list expressions and list comprehension,
but NOT own functions.
Complete tasks one after another. Once you are done with one task,
uncomment test case in test_numbers.py. Remove comments for
# TestCase_b = Test_Numbers
# TestCase_c = Test_Numbers
# TestCase_d = Test_Numbers
# TestCase_b = Test_Expressions
# TestCase_c = Test_Expressions
# TestCase_d = Test_Expressions
# ...
Run tests in IDE and in a terminal:
python test_numbers.py
python -m unittest test_numbers.py
python test_expressions.py
python -m unittest test_expressions.py
"""
default_numbers=[4, 12, 3, 8, 17, 12, 1, 8, 7]
......@@ -98,9 +98,9 @@ if __name__ == '__main__':
Driver that runs when this file is directly executed.
'''
#
n1 = Numbers() # use default list
n1 = Expressions() # use default list
#
n2 = Numbers([1, 4, 6, 67, 6, 8, 23, 8, 34, 49, 67,
n2 = Expressions([1, 4, 6, 67, 6, 8, 23, 8, 34, 49, 67,
6, 8, 23, 37, 67, 6, 34, 19, 67, 6, 8])
#
n1.print_results()
......
Run unit tests with discovery (-m) or from __main__() with verbosity level 2
- python -m unittest test_numbers.py
- python test_numbers.py
Output with verbosity level < 2:
================================
...........
----------------------------------------------------------------------
Ran 11 tests in 0.002s
OK
Output with verbosity level >=2:
================================
test_a_number_of_numbers (C_expressions.test_expressions.TestCase_a_number_of_numbers.test_a_number_of_numbers) ... ok
test_b_first_three_numbers (C_expressions.test_expressions.TestCase_b_first_three_numbers.test_b_first_three_numbers) ... ok
test_c_last_three_numbers (C_expressions.test_expressions.TestCase_c_last_three_numbers.test_c_last_three_numbers) ... ok
test_d_last_threeClass_in_reverse (C_expressions.test_expressions.TestCase_d_last_threeClass_in_reverse.test_d_last_threeClass_in_reverse) ... ok
test_e_odd_numbers (C_expressions.test_expressions.TestCase_e_odd_numbers.test_e_odd_numbers) ... ok
test_f_number_of_odd_numbers (C_expressions.test_expressions.TestCase_f_number_of_odd_numbers.test_f_number_of_odd_numbers) ... ok
test_g_sum_of_odd_numbers (C_expressions.test_expressions.TestCase_g_sum_of_odd_numbers.test_g_sum_of_odd_numbers) ... ok
test_h_duplicateClass_removed (C_expressions.test_expressions.TestCase_h_duplicateClass_removed.test_h_duplicateClass_removed) ... ok
test_i_number_of_duplicate_numbers (C_expressions.test_expressions.TestCase_i_number_of_duplicate_numbers.test_i_number_of_duplicate_numbers) ... ok
test_j_ascending_squaredClass_no_duplicates (C_expressions.test_expressions.TestCase_j_ascending_squaredClass_no_duplicates.test_j_ascending_squaredClass_no_duplicates) ... ok
test_k_classifyClass_as_odd_even_empty (C_expressions.test_expressions.TestCase_k_classifyClass_as_odd_even_empty.test_k_classifyClass_as_odd_even_empty) ... ok
----------------------------------------------------------------------
Ran 11 tests in 0.005s
OK
<unittest.runner.TextTestResult run=11 errors=0 failures=0>
......@@ -12,9 +12,9 @@ OK
<unittest.runner.TextTestResult run=11 errors=0 failures=0>
"""
import unittest
from numbers import Numbers
from numbers import __file__ as numbers__file__
from __init__ import PACKAGE_DIR, PROJECT_DIR, import_sol_module
from expressions import Expressions
from expressions import __file__ as numbers__file__
from __init__ import PACKAGE_DIR, PROJECT_PATH, import_sol_module
class TestCase_test_data:
......@@ -23,17 +23,17 @@ class TestCase_test_data:
"""
# objects "under test" or "tested objects" are instances
# of class Numbers initialized with varying lists
ut1 = Numbers(Numbers.default_numbers) # [4, 12, 3, 8, 17, 12, 1, 8, 7]
ut2 = Numbers([1, 4, 6, 67, 6, 8, 23, 8, 34, 49, 67, 6, 8, 23, 37, 67, 6, 34, 19, 67, 6, 8])
ut3 = Numbers([6, 67, 6, 8, 17, 3, 6, 8])
ut4 = Numbers([8, 3, 9])
ut5 = Numbers([1, 1, 1])
ut6 = Numbers([0, 0])
ut7 = Numbers([0])
ut8 = Numbers([])
ut1 = Expressions(Expressions.default_numbers) # [4, 12, 3, 8, 17, 12, 1, 8, 7]
ut2 = Expressions([1, 4, 6, 67, 6, 8, 23, 8, 34, 49, 67, 6, 8, 23, 37, 67, 6, 34, 19, 67, 6, 8])
ut3 = Expressions([6, 67, 6, 8, 17, 3, 6, 8])
ut4 = Expressions([8, 3, 9])
ut5 = Expressions([1, 1, 1])
ut6 = Expressions([0, 0])
ut7 = Expressions([0])
ut8 = Expressions([])
class Test_Numbers(unittest.TestCase):
class Test_Expressions(unittest.TestCase):
"""
Top-level class that inherits from class unittest.TestCase
and injects test data into derived test classes.
......@@ -63,7 +63,7 @@ class Disabled_test:
try:
mod = import_sol_module(numbers__file__)
verbosity_level = 1
Test_class = Test_Numbers
Test_class = Test_Expressions
#
except ImportError:
verbosity_level = 2
......@@ -75,17 +75,17 @@ TestCase_e = TestCase_f = TestCase_g = TestCase_h = Test_class
TestCase_i = TestCase_j = TestCase_k = Test_class
# uncomment tests, one after the other as you progress from b) through k)
TestCase_a = Test_Numbers # test a) passes, solution is given in numbers.py
# TestCase_b = Test_Numbers
# TestCase_c = Test_Numbers
# TestCase_d = Test_Numbers
# TestCase_e = Test_Numbers
# TestCase_f = Test_Numbers
# TestCase_g = Test_Numbers
# TestCase_h = Test_Numbers
# TestCase_i = Test_Numbers
# TestCase_j = Test_Numbers
# TestCase_k = Test_Numbers
TestCase_a = Test_Expressions # test a) passes, solution is given in numbers.py
TestCase_b = Test_Expressions
TestCase_c = Test_Expressions
TestCase_d = Test_Expressions
TestCase_e = Test_Expressions
TestCase_f = Test_Expressions
TestCase_g = Test_Expressions
TestCase_h = Test_Expressions
TestCase_i = Test_Expressions
TestCase_j = Test_Expressions
TestCase_k = Test_Expressions
......@@ -247,7 +247,7 @@ if __name__ == '__main__':
#
# discover tests in this package
test_classes = unittest.defaultTestLoader \
.discover(PACKAGE_DIR, pattern='test_*.py', top_level_dir=PROJECT_DIR)
.discover(PACKAGE_DIR, pattern='test_*.py', top_level_dir=PROJECT_PATH)
#
suite = unittest.TestSuite(test_classes)
runner = unittest.runner.TextTestRunner(verbosity=verbosity_level)
......
Run unit tests with discovery (-m) or from __main__() with verbosity level 2
- python -m unittest test_numbers.py
- python test_numbers.py
Output with verbosity level < 2:
================================
...........
----------------------------------------------------------------------
Ran 11 tests in 0.002s
OK
Output with verbosity level 2:
==============================
test_a_number_of_numbers (test_numbers.Test_Numbers_a_number_of_numbers.test_a_number_of_numbers) ... ok
test_b_first_three_numbers (test_numbers.Test_Numbers_b_first_three_numbers.test_b_first_three_numbers) ... ok
test_c_last_three_numbers (test_numbers.Test_Numbers_c_last_three_numbers.test_c_last_three_numbers) ... ok
test_d_last_three_numbers_in_reverse (test_numbers.Test_Numbers_d_last_three_numbers_in_reverse.test_d_last_three_numbers_in_reverse) ... ok
test_e_odd_numbers (test_numbers.Test_Numbers_e_odd_numbers.test_e_odd_numbers)... ok
test_f_number_of_odd_numbers (test_numbers.Test_Numbers_f_number_of_odd_numbers.
test_f_number_of_odd_numbers) ... ok
test_g_sum_of_odd_numbers (test_numbers.Test_Numbers_g_sum_of_odd_numbers.test_g_sum_of_odd_numbers) ... ok
test_h_duplicate_numbers_removed (test_numbers.Test_Numbers_h_duplicate_numbers_removed.test_h_duplicate_numbers_removed) ... ok
test_i_number_of_duplicate_numbers (test_numbers.Test_Numbers_i_number_of_duplicate_numbers.test_i_number_of_duplicate_numbers) ... ok
test_j_ascending_squared_numbers_no_duplicates (test_numbers.Test_Numbers_j_ascending_squared_numbers_no_duplicates.test_j_ascending_squared_numbers_no_duplicates) ... ok
test_k_classify_numbers_as_odd_even_empty (test_numbers.Test_Numbers_k_classify_numbers_as_odd_even_empty.test_k_classify_numbers_as_odd_even_empty) ... ok
----------------------------------------------------------------------
Ran 11 tests in 0.005s
OK
<unittest.runner.TextTestResult run=11 errors=0 failures=0>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment