master > master: code-py - unittests
This commit is contained in:
parent
34c7d9d0c4
commit
274f633f2c
0
code/python/tests/__init__.py
Normal file
0
code/python/tests/__init__.py
Normal file
26
code/python/tests/conftest.py
Normal file
26
code/python/tests/conftest.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from unittest import TestCase;
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
|
||||||
|
from tests.core.log import *;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# CONSTANTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@fixture(scope='module')
|
||||||
|
def test():
|
||||||
|
return TestCase();
|
0
code/python/tests/core/__init__.py
Normal file
0
code/python/tests/core/__init__.py
Normal file
17
code/python/tests/core/log.py
Normal file
17
code/python/tests/core/log.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# METHODS - logging
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
def log(*lines: str):
|
||||||
|
with open('logs/debug.log', 'a') as fp:
|
||||||
|
for line in lines:
|
||||||
|
print(line, end='\n', file=fp);
|
0
code/python/tests/test_core/__init__.py
Normal file
0
code/python/tests/test_core/__init__.py
Normal file
21
code/python/tests/test_core/conftest.py
Normal file
21
code/python/tests/test_core/conftest.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# CONSTANTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
21
code/python/tests/test_core/test_log.py
Normal file
21
code/python/tests/test_core/test_log.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# Test logging
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
0
code/python/tests/test_graphs/__init__.py
Normal file
0
code/python/tests/test_graphs/__init__.py
Normal file
24
code/python/tests/test_graphs/conftest.py
Normal file
24
code/python/tests/test_graphs/conftest.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from unittest import TestCase;
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
|
||||||
|
from tests.core.log import *;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# CONSTANTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
60
code/python/tests/test_graphs/test_graph.py
Normal file
60
code/python/tests/test_graphs/test_graph.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from contextlib import nullcontext as does_not_raise
|
||||||
|
from collections import Counter;
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
from unittest import TestCase;
|
||||||
|
|
||||||
|
from src.graphs.graph import *;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@fixture(scope='module')
|
||||||
|
def graph1() -> Graph:
|
||||||
|
return Graph(
|
||||||
|
nodes=[1,2,3,4,5,6,7,8],
|
||||||
|
edges=[(1,2), (1, 3), (2,3), (3,4), (4, 5), (5, 6), (6, 2), (6, 7), (6, 8)],
|
||||||
|
);
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# Test Graph
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_graph_creation(test: TestCase):
|
||||||
|
with does_not_raise():
|
||||||
|
G = Graph(
|
||||||
|
[5, 7, 8],
|
||||||
|
[(5,7), (7, 8)]
|
||||||
|
);
|
||||||
|
test.assertEqual(len(G), 3);
|
||||||
|
G = Graph(
|
||||||
|
["5", "7", "8", "10"],
|
||||||
|
[("5", "7"), ("7", "8")]
|
||||||
|
);
|
||||||
|
test.assertEqual(len(G), 4);
|
||||||
|
G = Graph(nodes=[], edges=[]);
|
||||||
|
test.assertEqual(len(G), 0);
|
||||||
|
|
||||||
|
@mark.usefixtures('test', 'graph1')
|
||||||
|
def test_graph_subgraph(test: TestCase, graph1: Graph):
|
||||||
|
sub_gph = graph1.subgraph([2,4,5,6,8]);
|
||||||
|
test.assertCountEqual(sub_gph.edges, [(6,2), (4,5), (5,6), (6,8)]);
|
||||||
|
|
||||||
|
@mark.usefixtures('test', 'graph1')
|
||||||
|
def test_graph_successors_and_predecessors(test: TestCase, graph1: Graph):
|
||||||
|
test.assertCountEqual(graph1.successors(1), [2, 3]);
|
||||||
|
test.assertEqual(len(graph1.successors(8)), 0);
|
||||||
|
test.assertCountEqual(graph1.successors(6), [2, 7, 8]);
|
||||||
|
|
||||||
|
test.assertEqual(len(graph1.predecessors(1)), 0);
|
||||||
|
test.assertCountEqual(graph1.predecessors(8), [6]);
|
||||||
|
test.assertCountEqual(graph1.predecessors(6), [5]);
|
98
code/python/tests/test_graphs/test_tarjan.py
Normal file
98
code/python/tests/test_graphs/test_tarjan.py
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from contextlib import nullcontext as does_not_raise
|
||||||
|
from collections import Counter;
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
from pytest import lazy_fixture;
|
||||||
|
from unittest import TestCase;
|
||||||
|
|
||||||
|
from src.local.typing import *;
|
||||||
|
from src.graphs.graph import *;
|
||||||
|
from src.graphs.tarjan import *;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@fixture(scope='module')
|
||||||
|
def graph1() -> Graph:
|
||||||
|
return Graph(
|
||||||
|
nodes=[1,2,3,4],
|
||||||
|
edges=[(1,2), (2,4), (4,2)],
|
||||||
|
);
|
||||||
|
|
||||||
|
@fixture(scope='module')
|
||||||
|
def graph2() -> Graph:
|
||||||
|
return Graph(
|
||||||
|
nodes=[1,2,3,4,5,6,7],
|
||||||
|
edges=[(1,2), (1,3), (2,3), (3,4), (4,5), (5,2), (5,6), (5,7), (6,7)],
|
||||||
|
);
|
||||||
|
|
||||||
|
@fixture(scope='module')
|
||||||
|
def graph3() -> Graph:
|
||||||
|
return Graph(
|
||||||
|
nodes=[1,2,3,4,5,6,7,8],
|
||||||
|
edges=[
|
||||||
|
(1,2),
|
||||||
|
(1,3),
|
||||||
|
(2,4),
|
||||||
|
(2,5),
|
||||||
|
(3,5),
|
||||||
|
(3,6),
|
||||||
|
(3,8),
|
||||||
|
(4,5),
|
||||||
|
(4,7),
|
||||||
|
(5,1),
|
||||||
|
(5,8),
|
||||||
|
(6,8),
|
||||||
|
(7,8),
|
||||||
|
(8,6),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# Test Tarjan-Algorithm
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@mark.parametrize(
|
||||||
|
('G', 'expected'),
|
||||||
|
[
|
||||||
|
(lazy_fixture('graph1'), [[1], [3], [2,4]]),
|
||||||
|
(lazy_fixture('graph2'), [[1], [6], [7], [2,3,4,5]]),
|
||||||
|
(lazy_fixture('graph3'), [[1,2,3,4,5], [7], [6,8]]),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_tarjan(test, G, expected):
|
||||||
|
components = tarjan_algorithm(G, False);
|
||||||
|
assert_components_eq(test, components, expected);
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# AUXILIARY METHODS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
def assert_components_eq(test: TestCase, components1: list[list[Any]], components2: list[list[Any]]):
|
||||||
|
result = check_components_eq(test, components1, components2);
|
||||||
|
test.assertTrue(result);
|
||||||
|
|
||||||
|
def check_components_eq(test: TestCase, components1: list[list[Any]], components2: list[list[Any]]) -> bool:
|
||||||
|
if len(components1) != len(components2):
|
||||||
|
return False;
|
||||||
|
for component1 in components1:
|
||||||
|
found = False;
|
||||||
|
for component2 in components2:
|
||||||
|
try:
|
||||||
|
test.assertCountEqual(component1, component2);
|
||||||
|
found = True;
|
||||||
|
break;
|
||||||
|
except:
|
||||||
|
continue;
|
||||||
|
if not found:
|
||||||
|
return False;
|
||||||
|
return True;
|
0
code/python/tests/test_stacks/__init__.py
Normal file
0
code/python/tests/test_stacks/__init__.py
Normal file
15
code/python/tests/test_stacks/conftest.py
Normal file
15
code/python/tests/test_stacks/conftest.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from pytest import mark;
|
||||||
|
from pytest import fixture;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# FIXTURES
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#
|
63
code/python/tests/test_stacks/test_stack.py
Normal file
63
code/python/tests/test_stacks/test_stack.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# IMPORTS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
from contextlib import nullcontext as does_not_raise
|
||||||
|
import pytest;
|
||||||
|
from pytest import mark;
|
||||||
|
from unittest import TestCase;
|
||||||
|
|
||||||
|
from src.stacks.stack import Stack;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# Fixtures
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
def format_data_for_display(data):
|
||||||
|
return [ '{given_name} {family_name}: {title}'.format(**row) for row in data ];
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# Test stack
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_stack_initialisation(test: TestCase):
|
||||||
|
stack = Stack();
|
||||||
|
test.assertEqual(len(stack), 0);
|
||||||
|
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_stack_push(test: TestCase):
|
||||||
|
stack = Stack();
|
||||||
|
test.assertEqual(len(stack), 0);
|
||||||
|
stack.push('hallo');
|
||||||
|
test.assertEqual(len(stack), 1);
|
||||||
|
stack.push('welt');
|
||||||
|
test.assertEqual(len(stack), 2);
|
||||||
|
stack.push('!');
|
||||||
|
test.assertEqual(len(stack), 3);
|
||||||
|
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_stack_no_error(test: TestCase):
|
||||||
|
stack = Stack();
|
||||||
|
stack.push('hallo');
|
||||||
|
stack.push('welt');
|
||||||
|
stack.push('!');
|
||||||
|
with does_not_raise():
|
||||||
|
stack.pop();
|
||||||
|
stack.pop();
|
||||||
|
stack.pop();
|
||||||
|
|
||||||
|
@mark.usefixtures('test')
|
||||||
|
def test_stack_error_po(test: TestCase):
|
||||||
|
stack = Stack();
|
||||||
|
stack.push('hallo');
|
||||||
|
stack.push('welt');
|
||||||
|
stack.push('!');
|
||||||
|
with pytest.raises(Exception):
|
||||||
|
stack.pop();
|
||||||
|
stack.pop();
|
||||||
|
stack.pop();
|
||||||
|
stack.pop();
|
Loading…
x
Reference in New Issue
Block a user