add solution for lasagne task

This commit is contained in:
Andreas Zweili 2021-11-01 19:52:23 +01:00
parent 16a076cb0d
commit 21fe698bc0
2 changed files with 38 additions and 16 deletions

View File

@ -2,9 +2,10 @@
# TODO: consider defining the 'PREPARATION_TIME' constant
# equal to the time it takes to prepare a single layer
EXPECTED_BAKE_TIME = 40
# TODO: define the 'bake_time_remaining()' function
def bake_time_remaining():
def bake_time_remaining(elapsed_bake_time):
"""Calculate the bake time remaining.
:param elapsed_bake_time: int baking time already elapsed.
@ -15,9 +16,30 @@ def bake_time_remaining():
based on the `EXPECTED_BAKE_TIME`.
"""
pass
return EXPECTED_BAKE_TIME - elapsed_bake_time
# TODO: define the 'preparation_time_in_minutes()' function
# and consider using 'PREPARATION_TIME' here
# TODO: define the 'elapsed_time_in_minutes()' function
def preparation_time_in_minutes(number_of_layers):
"""Calculate the amout of time it takes to prepare the desired number of
layers.
:param number_of_layers: int desired number of layers to prepare
:return: int time required to prepare layers
"""
return number_of_layers * 2
def elapsed_time_in_minutes(number_of_layers, elapsed_bake_time):
"""
Return elapsed cooking time.
This function takes two numbers representing the number of layers & the time already spent
baking and calculates the total elapsed minutes spent cooking the lasagna.
:param number_of_layers: int desired number of layers to prepare
:param elapsed_bake_time int
:return: int elapsed cooking time
"""
preparation_time = preparation_time_in_minutes(number_of_layers)
return preparation_time + elapsed_bake_time

View File

@ -26,12 +26,10 @@ except ImportError as import_fail:
class LasagnaTest(unittest.TestCase):
@pytest.mark.task(taskno=1)
def test_EXPECTED_BAKE_TIME(self):
failure_msg = 'Expected a constant of EXPECTED_BAKE_TIME with a value of 40.'
self.assertEqual(EXPECTED_BAKE_TIME, 40, msg=failure_msg)
@pytest.mark.task(taskno=2)
def test_bake_time_remaining(self):
input_data = [1, 2, 5, 10, 15, 23, 33, 39]
result_data = [40 - item for item in input_data]
@ -39,9 +37,9 @@ class LasagnaTest(unittest.TestCase):
for variant, (time, result) in enumerate(zip(input_data, result_data), start=1):
with self.subTest(f'variation #{variant}', time=time, result=result):
failure_msg = f'Expected: {result} but the bake time remaining was calculated incorrectly.'
self.assertEqual(bake_time_remaining(time), result, msg=failure_msg)
self.assertEqual(bake_time_remaining(
time), result, msg=failure_msg)
@pytest.mark.task(taskno=3)
def test_preparation_time_in_minutes(self):
input_data = [1, 2, 5, 8, 11, 15]
result_data = [item * 2 for item in input_data]
@ -49,22 +47,24 @@ class LasagnaTest(unittest.TestCase):
for variant, (layers, time) in enumerate(zip(input_data, result_data), start=1):
with self.subTest(f'variation #{variant}', layers=layers, time=time):
failure_msg = f'Expected: {time} minutes, but preparation time was calculated incorrectly.'
self.assertEqual(preparation_time_in_minutes(layers), time, msg=failure_msg)
self.assertEqual(preparation_time_in_minutes(
layers), time, msg=failure_msg)
@pytest.mark.task(taskno=4)
def test_elapsed_time_in_minutes(self):
layer_data = (1, 2, 5, 8, 11, 15)
time_data = (3, 7, 8, 4, 15, 20)
result_data = [prep * 2 + elapsed for prep, elapsed in zip(layer_data, time_data)]
result_data = [prep * 2 + elapsed for prep,
elapsed in zip(layer_data, time_data)]
for variant, (layers, time, total_time) in enumerate(zip(layer_data, time_data, result_data), start=1):
with self.subTest(f'variation #{variant}', layers=layers, time=time, total_time=total_time):
failure_msg = f'Expected {time} minutes elapsed, but the timing was calculated incorrectly.'
self.assertEqual(elapsed_time_in_minutes(layers, time), total_time, msg=failure_msg)
self.assertEqual(elapsed_time_in_minutes(
layers, time), total_time, msg=failure_msg)
@pytest.mark.task(taskno=5)
def test_docstrings_were_written(self):
functions = [bake_time_remaining, preparation_time_in_minutes, elapsed_time_in_minutes]
functions = [bake_time_remaining,
preparation_time_in_minutes, elapsed_time_in_minutes]
for variant, function in enumerate(functions, start=1):
with self.subTest(f'variation #{variant}', function=function):