| Total Complexity | 6 |
| Total Lines | 54 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | import pytest |
||
| 2 | |||
| 3 | @pytest.fixture |
||
| 4 | def termination_condition_adapter(termination_condition): |
||
| 5 | from neural_style_transfer.termination_condition_adapter import TerminationConditionAdapterFactory |
||
| 6 | termination_condition_instance = termination_condition('max-iterations', 4) |
||
| 7 | return TerminationConditionAdapterFactory.create('max-iterations', termination_condition_instance) |
||
| 8 | |||
| 9 | |||
| 10 | @pytest.fixture |
||
| 11 | def broadcaster_class(): |
||
| 12 | class TestSubject: |
||
| 13 | def __init__(self, subject, done_callback): |
||
| 14 | self.subject = subject |
||
| 15 | self.done = done_callback |
||
| 16 | |||
| 17 | def iterate(self): |
||
| 18 | i = 0 |
||
| 19 | while not self.done(): |
||
| 20 | # do something in the current iteration |
||
| 21 | print('Iteration with index', i) |
||
| 22 | |||
| 23 | # notify when we have completed i+1 iterations |
||
| 24 | self.subject.state = type('Subject', (), { |
||
| 25 | 'metrics': {'iterations': i + 1}, # we have completed i+1 iterations |
||
| 26 | }) |
||
| 27 | self.subject.notify() |
||
| 28 | i += 1 |
||
| 29 | return i |
||
| 30 | |||
| 31 | return TestSubject |
||
| 32 | |||
| 33 | |||
| 34 | @pytest.fixture |
||
| 35 | def test_objects(broadcaster_class, termination_condition_adapter): |
||
| 36 | from neural_style_transfer.utils.notification import Subject |
||
| 37 | return type('O', (), { |
||
| 38 | 'broadcaster': broadcaster_class(Subject(), lambda: termination_condition_adapter.satisfied), |
||
| 39 | 'adapter': termination_condition_adapter |
||
| 40 | }) |
||
| 41 | |||
| 42 | |||
| 43 | def test_adapter(test_objects): |
||
| 44 | # subscribe adapter to broadcaster |
||
| 45 | test_objects.broadcaster.subject.attach(test_objects.adapter) |
||
| 46 | |||
| 47 | # select a loop function (from test implementations) |
||
| 48 | |||
| 49 | # iterate |
||
| 50 | iterations = test_objects.broadcaster.iterate() |
||
| 51 | |||
| 52 | # assert iterations completed are the expected nb of oiterations |
||
| 53 | assert iterations == 4 |
||
| 54 |