From 5f1cc196c86e1b402730a2907cbe010c04bb7d64 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Fri, 21 Mar 2025 00:36:58 +0100 Subject: [PATCH] tests for a and b --- __pycache__/ex6_recursion.cpython-312.pyc | Bin 0 -> 2977 bytes ex6_recursion.md | 23 + ex6_recursion.py | 49 ++ exam.pdf | Bin 0 -> 198729 bytes test14.py | 964 ---------------------- test_ex6.py | 425 ++++++++++ 6 files changed, 497 insertions(+), 964 deletions(-) create mode 100644 __pycache__/ex6_recursion.cpython-312.pyc create mode 100644 ex6_recursion.md create mode 100644 ex6_recursion.py create mode 100644 exam.pdf delete mode 100644 test14.py create mode 100644 test_ex6.py diff --git a/__pycache__/ex6_recursion.cpython-312.pyc b/__pycache__/ex6_recursion.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6f5f897bcb24230081f5cc8222a52166e502e188 GIT binary patch literal 2977 zcmbtVT}&KR6ux(6_J^Gv?3P7@7RmzEZdGV2T8r4!3L<^LR52#2W-{HGMRa#*XJ!*< zAX&8uYpszcHCF z?z!K+=R4<~`@JOj2sCqgedK3>kYDhp+{DsgqmLuxB2kG-<0L^Nl;W6+a|u4eQ=(Ch zsQekSSTZm75driYwnn!dd>(D4_JAtth`!{TJymkLiFENU&O}| z&7=7isROPOoH4j#!L*MsxovX}Jj7PEi6EXw z6U*~zplV-duK+{X&g6gDvF_h@tl)#4SM{mE#nPGnhnLa=PFL}{#K)%3$evg8tKycO zQ7e_T4AbGjuVQ=zbqmL3+lp5cz6oErzJMf$sa>NgrV@=Sh5Bnk?HsSx$_psW^`PvV1C~#7i@e z$g(+cQjq;tmyvx)KQ`W|ngnVG%foHq4@#kb+i>7n~U^`Dv=w3ub!2sZrk-w%%n%wq@9}nbP zJJNlbJu`<^ea)88kq_-o_h+7;8C(@xeh_wVfUUE10XdgCN3^7-k4EJailONNoMf2D ze(RAV`gZ8=?d&aCwK7jNQ`3#su~;iocUXTEOxT)w82p_k>!SZI;pyW{+`*Av2Q&8t z7b(FlHd;VTm+BSE7ZRfx_*CwUH^yHTS!TG74(po64t5_3A|Uie2Z%4|MPfqlG_!Oc z3HgLzQs4(zbSTU@@j&(#sN*cwt2A>}e+-69NH8#vkH6C7g7;D|tIRg6ZVTl|h>k?(2Bn*m*vOlhcCPXc9cxfDGsgP-(-Q|Fk#|dWo?p{D`u6BE9*{!&1pDo zl#@5lGD#kU_y+7a0ogR9<93XhFz@7O4JhndBbAWHVzQAsfiA+_PPAip1DP<;x7OBH zCjz^04h52L908Fgd0(w91@d*lbt!OD3gx6w-oNeh!Lx&xTIL0-@#*WeD=BMV|7v6Z zs=xoU!F*lA#Y5*0<@`JExJYf=*7U>RGeQx*T&kuhq+J!IlaxJv+$2@`3ek=>=7z^o zh;rWukW?;~Ma(IiQ%t=XK%>>n<8~}hFR|@5;|CF{0IQTm(2o(Eg6L8*30q@L*5Tcr zfd4JFk2|(g{FGo;V#Jx~8f%k0#JF^lDy>k_mfw?747njEd>jj(?T)5QSuw#w7O@b3 z>KM|h*kLw7?8?z=$5|AZ>&ELKD$#4mOU>toZ%WNMsd+9qzx}Hw7(lFwJgIH@6(ie` zlRDPx8nVKr*xc~^0js6+x_c?La>Cm8l2vy!=RbM}On0+*hAF$IP*Q6;RV}8Z;-=x; zX7smooO>+~xsZ-uhxOg%lkR0FJ-5F|JoIIHp+6fs|Ee>d3pxGQu6bp_`v;q6C%`8n zp^PSFd8mNw7jWYOa$msmRzPM7SQraf7z@Z-0n@#Jdxa%i+wc;lT{Nz(t-?`Wp%TM0OP2 zgcJYdpfGRnFe>8cuAk7hqSsBEv-MeHwy8*9IL~ijcQ=Tf6oW+YXHKv2jrkfWee{;t zm~FGf=DEO{*p?I8a$;LvlrlXzp+3`dyGF_==YuoKEY!^}8!mUuox1Xb71+Dbw-i|J zTM1knu%7C*YF?~@*}f*W=Y;m0*bXqT^u%mO_LQ@5p?irg9<-XCSsq?#yP6dN+L}=#tr@c9GS5DXka#J(gJx4Eh&(rzt<=~QXt-)$P WWbNo#6T#P>Rk5eoNQ5Sq5&r<&Cu@EH literal 0 HcmV?d00001 diff --git a/ex6_recursion.md b/ex6_recursion.md new file mode 100644 index 0000000..9799818 --- /dev/null +++ b/ex6_recursion.md @@ -0,0 +1,23 @@ +# Aufgabe 6 - Rekursion - 20P + +## a - `sum_of_subtree` - 10P + +- Basisfall `None` [3P] +- Rekursiver Fall: + - Aufruf der Funktion auf `left` und `right` [3P] + - Addition der Teilbaum Summen [1P] + - Setzen von `tree.mark` [2P] + - Rückgabe der Summe [1P] + +- Pattern Matching nicht verwendet [0P] + +## b - `cut_at` - 10P + +- Basisfall `None` [3P] +- Basisfall `mark == at` [3P] + - Dieser Fall konnte auch mit dem Rekursiven Fall kombiniert werden (`if mark == at` ist okay :)) +- Rekursiver Fall: + - Aufruf der Funktion auf `left` und `right` [3P] + - Rückgabe des neuen Baumes [1P] + +- Pattern Matching nicht verwendet [0P] diff --git a/ex6_recursion.py b/ex6_recursion.py new file mode 100644 index 0000000..40626b4 --- /dev/null +++ b/ex6_recursion.py @@ -0,0 +1,49 @@ +# Aufgabe 6: Rekursion +from dataclasses import dataclass +from typing import Optional + + +@dataclass +class Node[T]: + mark: T + left: Optional["Node[T]"] = None + right: Optional["Node[T]"] = None + + +type BTree[T] = Optional[Node[T]] + + +# a) +def sum_of_subtree(tree: BTree[int]) -> int: + match tree: + case None: + return 0 + case Node(_, left, right): + tree.mark += sum_of_subtree(left) + sum_of_subtree(right) + return tree.mark + + +# b) +def cut_at[T](tree: BTree[T], at: T) -> BTree[T]: + match tree: + case None: + return None + case Node(mark, _, _) if mark == at: + return None + case Node(mark, left, right): # f(mark) + return Node(mark, cut_at(left, at), cut_at(right, at)) + + +if __name__ == "__main__": + t1 = None + assert sum_of_subtree(t1) == 0 + assert t1 is None + + t3 = Node(1, Node(2, Node(3), Node(4)), Node(5, Node(6))) + assert sum_of_subtree(t3) == 21 + assert t3 == Node(21, Node(9, Node(3), Node(4)), Node(11, Node(6))) + + assert cut_at(None, 42) is None + t = Node(1, Node(2, Node(3), Node(4)), Node(3, Node(3), Node(6))) + assert cut_at(t, 1) is None + assert cut_at(t, 3) == Node(1, Node(2, None, Node(4))) diff --git a/exam.pdf b/exam.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e13e43456072ab5b304a3ea2b583b5b6296f6f7e GIT binary patch literal 198729 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 Ne3MKKExZ7`OP^?U>0M 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%0D@)lfBsSq4SH&(To@qWQjzpP> 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 U2+zXJ#m&tIPeCCj_X+-g0cim*cmMzZ literal 0 HcmV?d00001 diff --git a/test14.py b/test14.py deleted file mode 100644 index 4d6c526..0000000 --- a/test14.py +++ /dev/null @@ -1,964 +0,0 @@ -from dataclasses import dataclass, field, fields, is_dataclass, InitVar -from types import NoneType, FunctionType, GenericAlias -from typing import get_args, Callable, Iterable, Iterator, Type, Optional, TypeAliasType, ForwardRef, Any, Literal -from enum import Enum -import unittest -from unittest import mock -from unittest.mock import patch -from functools import wraps -import signal -import io -import importlib -import importlib.util -import sys -import subprocess -import os -import shutil -import re -import math -import inspect -import json -import ast -import copy -import functools -import itertools - -output = "" - - -class TimeoutException(Exception): - pass - - -class Timeout: - def __init__(self, seconds, msg=None) -> None: - if msg is None: - msg = f"Test timed out after {seconds} seconds." - self.seconds = seconds - self.msg = msg - - def handle_timeout(self, signal, frame): - raise TimeoutException(self.msg) - - def __enter__(self): - signal.signal(signal.SIGALRM, self.handle_timeout) - signal.alarm(self.seconds) - - def __exit__(self, exc_type, exc_val, exc_tb): - signal.alarm(0) - -class IterablePure: - def __init__(self, i: Optional[Iterable] = None, repeat: bool = False): - if i is not None: - self.i = i - else: - def endless(): - c = 0 - while True: - yield c - c += 1 - self.i = endless() - - self.repeat = repeat - - def __iter__(self): - if self.repeat: - while True: - yield from self.i - else: - yield from self.i - - -def resolve_type_alias(t: Type) -> Type: - while isinstance(t, TypeAliasType | GenericAlias) and hasattr(t, "__value__"): - if isinstance(t, TypeAliasType): - t = t.__value__ - elif isinstance(t, GenericAlias): - t = t.__value__[*t.__args__] - return t - - -def check_annot(function: Callable, expected: list[Type], ret=None): - actual = function.__annotations__ - if "self" in actual: - del actual["self"] - return_type = actual["return"] if "return" in actual else None - actual = list(actual.values())[:-1] if "return" in actual else list(actual.values()) - for a, e in zip(actual, expected): - a = resolve_type_alias(a) - e = resolve_type_alias(e) - if a != e: - return False - return resolve_type_alias(ret) == resolve_type_alias(return_type) - - -def check_lambda_annotations(module, f_name: str, param_types: list[object], return_type: object = None) -> bool: - annotation = module.__annotations__[f_name] - if annotation.__name__ != 'Callable': - return False - - all_types = annotation.__args__ - types, ret_type = all_types[:-1], all_types[-1] - if ret_type != return_type: - return False - - for param, param_type in zip(types, param_types): - while isinstance(param, TypeAliasType): - param = param.__value__ - while isinstance(param_type, TypeAliasType): - param_type = param_type.__value__ - if param != param_type: - return False - return True - - -def check_attributes(o: object, inherited_attr: list[str], new_attr: list[str]) -> bool: - attr = [f.name for f in fields(o)] - if attr != inherited_attr + new_attr: - return False - - for attr in inherited_attr: - if attr in o.__annotations__: - return False - return True - - -def check_no_if_used(f: Callable) -> bool: - tree = ast.parse(inspect.getsource(f)) - for node in ast.walk(tree): - if isinstance(node, ast.If): - return False - return True - -def check_comprehension_used(f: Callable) -> bool: - source = inspect.getsource(f) - tree = ast.parse(source) - - for node in ast.walk(tree): - if isinstance(node, (ast.ListComp, ast.SetComp, ast.DictComp, ast.GeneratorExp)): - return True - return False - - -def check_no_sideeffects(f: Callable, *args) -> bool: - args_copy = tuple(copy.deepcopy(a) for a in args) - f(*args) - return args == args_copy - - -def check_function_used(f: Callable, name: str) -> bool: - source = inspect.getsource(f) - if source.startswith(4 * " "): - source = "\n".join(l[4:] for l in source.split("\n")) - return name in [c.func.id for c in ast.walk(ast.parse(source)) if isinstance(c, ast.Call) and isinstance(c.func, ast.Name)] - - -def check_function_not_used(f: Callable, name: str) -> bool: - source = inspect.getsource(f) - if source.startswith(4 * " "): - source = "\n".join(l[4:] for l in source.split("\n")) - return name not in [c.func.id for c in ast.walk(ast.parse(source)) if isinstance(c, ast.Call) and isinstance(c.func, ast.Name)] - - -def check_pattern_matching_used(f: Callable) -> bool: - source = inspect.getsource(f) - tree = ast.parse(source) - return any(isinstance(node, ast.Match) for node in ast.walk(tree)) - - -def check_gen(g: Iterator, res: Iterable, check_end: bool = True, max: int = 100) -> bool: - if not isinstance(g, Iterator): - return False - for i, x in enumerate(res): - el = next(g) - if el != x: - return False - if i >= max: - break - if check_end: - try: - next(g) - except StopIteration: - return True - return False - return True - - -def check_only_one_line(f: Callable) -> bool: - if f.__name__ == '': - return True - inspect.getsource(f) - lines = [line for line in inspect.getsource(f).split('\n') if not line.strip().startswith('#') and line.strip() != ''] - return len(lines) == 2 - - -def mock_print(*args, sep=None, end=None, **_kwargs): - global output - if sep is None: - sep = " " - if end is None: - end = "\n" - args = [str(a) for a in args] - output += str(sep.join(args)) + end - - -def mock_input(*arg: str): - inputs = [s for s in arg] - - def input_function(arg=None): - if arg is None: - arg = "" - nonlocal inputs - if len(inputs) == 0: - raise Exception("More input asked than given") - p = inputs[0] - inputs = inputs[1:] - mock_print(arg, p, sep="") - return p - return input_function - - -def input_error(*arg): - raise Exception("Input is not allowed here") - - -@patch("builtins.print", mock_print) -@patch("builtins.input", input_error) -def check_global_statements(unit: unittest.TestCase, module_name: str): - global output - output = "" - with Timeout(2): - if module_name in sys.modules.keys(): - del sys.modules[module_name] - module = importlib.import_module(module_name) - unit.assertEqual(output, "") - has_global_asserts = any(isinstance(node, ast.Assert) - for node in ast.iter_child_nodes(ast.parse(inspect.getsource(module)))) - unit.assertFalse(has_global_asserts) - - -def no_input_test(test_function: Callable) -> Callable: - @wraps(test_function) - @patch("builtins.print", mock_print) - @patch("builtins.input", input_error) - def inner(self): - global output - output = "" - with Timeout(2): - test_function(self) - return inner - - -class Ex1_sequences(unittest.TestCase): - def test1_global_statements(self): - check_global_statements(self, "ex1_sequences") - - @no_input_test - def test1_annot(self): - global output - output = "" - with Timeout(2): - import ex1_sequences - self.assertTrue(check_annot(ex1_sequences.count_iterations, [int, int], int)) - - @no_input_test - def test1_count_iterations(self): - global output - output = "" - with Timeout(2): - import ex1_sequences - self.assertEqual(ex1_sequences.count_iterations(10, 6), 1) - self.assertEqual(ex1_sequences.count_iterations(7, 6), 3) - self.assertEqual(ex1_sequences.count_iterations(4, 2), 1) - self.assertEqual(ex1_sequences.count_iterations(70, 2), 204) - self.assertEqual(ex1_sequences.count_iterations(3, 2), 3) - self.assertEqual(ex1_sequences.count_iterations(7, 4), 11) - self.assertEqual(ex1_sequences.count_iterations(37, 20), 6) - self.assertEqual(ex1_sequences.count_iterations(14, 4), 23) - self.assertEqual(ex1_sequences.count_iterations(8, 2), 2) - self.assertEqual(ex1_sequences.count_iterations(4, 3), 1) - - -class Ex2_dicts(unittest.TestCase): - def test2_global_statements(self): - check_global_statements(self, "ex2_dicts") - - @no_input_test - def test2_annot(self): - global output - output = "" - with Timeout(2): - import ex2_dicts - self.assertTrue(check_annot(ex2_dicts.lines, [dict[int, set[str]], str], set[int])) - self.assertTrue(check_annot(ex2_dicts.invert, [dict[int, set[str]]], dict[str, set[int]])) - self.assertTrue(check_annot(ex2_dicts.add_line, [dict[int, set[str]], set[str]], None)) - - @no_input_test - def test2_lines(self): - global output - output = "" - with Timeout(2): - import ex2_dicts - example1 = { - 1: {"Hauptbahnhof", "Paduaallee", "Stadttheater"}, - 2: {"Hauptbahnhof", "Stadttheater", "Hornusstraße", "Johanneskirche"}, - 3: {"Am Lindenwäldle", "Hauptbahnhof", "Stadttheater", "Johanneskirche"}, - 5: {"Europaplatz", "Stadttheater", "Am Lindenwäldle"}, - } - example2 = { - 1: {"stat1", "stat2", "stat3"}, - 3: {"stat3", "stat4"}, - 19: {"stat1", "stat2", "stat3", "stat4"} - } - self.assertEqual(ex2_dicts.lines(example1, "Hauptbahnhof"), {1, 2, 3}) - self.assertEqual(ex2_dicts.lines(example1, "Paduaallee"), {1}) - self.assertEqual(ex2_dicts.lines(example1, "Stadttheater"), {1, 2, 3, 5}) - self.assertEqual(ex2_dicts.lines(example1, "Stadttheater"), {1, 2, 3, 5}) - self.assertEqual(ex2_dicts.lines(example1, "Johanneskirche"), {2, 3}) - self.assertEqual(ex2_dicts.lines(example1, "Hornusstraße"), {2}) - self.assertEqual(ex2_dicts.lines(example1, "Am Lindenwäldle"), {3, 5}) - self.assertEqual(ex2_dicts.lines(example1, "Europaplatz"), {5}) - self.assertEqual(ex2_dicts.lines(example2, "stat1"), {1, 19}) - self.assertEqual(ex2_dicts.lines(example2, "stat2"), {1, 19}) - self.assertEqual(ex2_dicts.lines(example2, "stat3"), {1, 3, 19}) - self.assertEqual(ex2_dicts.lines(example2, "stat4"), {3, 19}) - - self.assertEqual(ex2_dicts.lines(example1, "Anywhere"), set()) - self.assertEqual(ex2_dicts.lines(example2, "Hauptbahnhof"), set()) - - self.assertEqual(ex2_dicts.lines({}, "Hauptbahnhof"), set()) - self.assertEqual(ex2_dicts.lines({}, "Anywhere"), set()) - - self.assertTrue(check_no_sideeffects(ex2_dicts.lines, example1, "Hauptbahnhof")) - - @no_input_test - def test2_invert(self): - global output - output = "" - with Timeout(2): - import ex2_dicts - example1 = { - 1: {"Hauptbahnhof", "Paduaallee", "Stadttheater"}, - 2: {"Hauptbahnhof", "Stadttheater", "Hornusstraße", "Johanneskirche"}, - 3: {"Am Lindenwäldle", "Hauptbahnhof", "Stadttheater", "Johanneskirche"}, - 5: {"Europaplatz", "Stadttheater", "Am Lindenwäldle"}, - } - example2 = { - 1: {"stat1", "stat2", "stat3"}, - 3: {"stat3", "stat4"}, - 19: {"stat1", "stat2", "stat3", "stat4"} - } - self.assertDictEqual(ex2_dicts.invert(example1),{ - 'Stadttheater': {1, 2, 3, 5}, - 'Hauptbahnhof': {1, 2, 3}, - 'Paduaallee': {1}, - 'Johanneskirche': {2, 3}, - 'Hornusstraße': {2}, - 'Am Lindenwäldle': {3, 5}, - 'Europaplatz': {5} - }) - self.assertDictEqual(ex2_dicts.invert(example2), { - 'stat1': {1, 19}, - 'stat2': {1, 19}, - 'stat3': {1, 3, 19}, - 'stat4': {3, 19} - }) - self.assertEqual(ex2_dicts.invert({}), {}) - self.assertTrue(check_no_sideeffects(ex2_dicts.invert, example1)) - - @no_input_test - def test2_add_line(self): - global output - output = "" - with Timeout(2): - import ex2_dicts - example1 = { - 1: {"Hauptbahnhof", "Paduaallee", "Stadttheater"}, - 2: {"Hauptbahnhof", "Stadttheater", "Hornusstraße", "Johanneskirche"}, - 3: {"Am Lindenwäldle", "Hauptbahnhof", "Stadttheater", "Johanneskirche"}, - 5: {"Europaplatz", "Stadttheater", "Am Lindenwäldle"}, - } - example2 = { - 1: {"stat1", "stat2", "stat3"}, - 3: {"stat3", "stat4"}, - 19: {"stat1", "stat2", "stat3", "stat4"} - } - ex2_dicts.add_line( - example1, - { - "Technische Fakultät", - "Hauptbahnhof", - "Stadttheater", - "Europaplatz", - "Hornusstraße", - }, - ) - self.assertDictEqual(example1, { - 1: {"Hauptbahnhof", "Paduaallee", "Stadttheater"}, - 2: {"Hauptbahnhof", "Stadttheater", "Hornusstraße", "Johanneskirche"}, - 3: {"Am Lindenwäldle", "Hauptbahnhof", "Stadttheater", "Johanneskirche"}, - 4: {"Technische Fakultät", "Hauptbahnhof", "Stadttheater", "Europaplatz", "Hornusstraße"}, - 5: {"Europaplatz", "Stadttheater", "Am Lindenwäldle"} - }) - - ex2_dicts.add_line(example2, {"stat1", "stat2", "stat3"}) - self.assertDictEqual(example2, { - 1: {"stat1", "stat2", "stat3"}, - 2: {"stat1", "stat2", "stat3"}, - 3: {"stat3", "stat4"}, - 19: {"stat1", "stat2", "stat3", "stat4"} - }) - - ex2_dicts.add_line(example2, {"foo", "bar"}) - self.assertDictEqual(example2, { - 1: {"stat1", "stat2", "stat3"}, - 2: {"stat1", "stat2", "stat3"}, - 3: {"stat3", "stat4"}, - 4: {"foo", "bar"}, - 19: {"stat1", "stat2", "stat3", "stat4"} - }) - - example3 = {} - for i in range(1, 100): - ex2_dicts.add_line(example3, {f"stat{i}"}) - for j in range(1, i + 1): - self.assertEqual(example3[j], {f"stat{j}"}) - self.assertIsNone(ex2_dicts.add_line({}, {"foo"})) - - -class Ex3_strings(unittest.TestCase): - def test3_global_statements(self): - check_global_statements(self, "ex3_strings") - - @no_input_test - def test3_annot(self): - global output - output = "" - with Timeout(2): - import ex3_strings - self.assertTrue(check_annot(ex3_strings.s2_in_s1, [str, str], bool)) - self.assertTrue(check_annot(ex3_strings.split_text, [str], list[str])) - - @no_input_test - def test3_s2_in_s1(self): - global output - output = "" - with Timeout(2): - import ex3_strings - self.assertTrue(ex3_strings.s2_in_s1("function", "fn") is True) - self.assertTrue(ex3_strings.s2_in_s1("function", "ufnction") is False) - self.assertTrue(ex3_strings.s2_in_s1("function", "fnn") is True) - self.assertTrue(ex3_strings.s2_in_s1("function", "fcc") is False) - self.assertTrue(ex3_strings.s2_in_s1("teststring", "tssr") is True) - self.assertTrue(ex3_strings.s2_in_s1("test", "test") is True) - self.assertTrue(ex3_strings.s2_in_s1("cons", "cs") is True) - self.assertTrue(ex3_strings.s2_in_s1("co", "oc") is False) - self.assertTrue(ex3_strings.s2_in_s1("false", "flase") is False) - - self.assertTrue(ex3_strings.s2_in_s1("foo", "") is True) - self.assertTrue(ex3_strings.s2_in_s1("", "bar") is False) - - @no_input_test - def test3_split_text(self): - global output - output = "" - with Timeout(2): - import ex3_strings - self.assertListEqual(ex3_strings.split_text("You're a lizard, Harry!"), [ - 'You', "'", 're', ' ', 'a', ' ', 'lizard', ', ', 'Harry', '!' - ]) - self.assertListEqual(ex3_strings.split_text("Luke! I'm your father!!"), [ - 'Luke', '! ', 'I', "'", 'm', ' ', 'your', ' ', 'father', '!!' - ]) - self.assertListEqual(ex3_strings.split_text("*Stay away from her, you $!#@!*"), [ - '*', 'Stay', ' ', 'away', ' ', 'from', ' ', 'her', ', ', 'you', ' $!#@!*' - ]) - self.assertListEqual(ex3_strings.split_text("hello world"), ["hello", " ", "world"]) - self.assertListEqual(ex3_strings.split_text("test$$case"), ["test", "$$", "case"]) - self.assertListEqual(ex3_strings.split_text(""), []) - self.assertListEqual(ex3_strings.split_text("word"), ["word"]) - self.assertListEqual(ex3_strings.split_text("138904642&(/%$)(=)"), ["138904642&(/%$)(=)"]) - - -class Ex4_dataclasses(unittest.TestCase): - def test4_global_statements(self): - check_global_statements(self, "ex5_dataclasses") - - @no_input_test - def test4_annot(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - self.assertTrue(is_dataclass(ex5_dataclasses.Vehicle)) - self.assertTrue(check_attributes(ex5_dataclasses.Vehicle, [], ["seats", "hp", "ccm", "weight"])) - self.assertDictEqual(ex5_dataclasses.Vehicle.__annotations__, { - "seats": int, - "hp": int, - "ccm": int, - "weight": int - }) - - @no_input_test - def test4_Vehicle(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - # seats - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 0, 5, 5, 5) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, -5, 5, 5, 5) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 10, 5, 5, 5) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 165, 5, 5, 5) - ex5_dataclasses.Vehicle(1, 5, 5, 5) - ex5_dataclasses.Vehicle(5, 5, 5, 5) - ex5_dataclasses.Vehicle(9, 5, 5, 5) - - # hp - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, 0, 5, 5) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, -5, 5, 5) - ex5_dataclasses.Vehicle(5, 1, 5, 5) - ex5_dataclasses.Vehicle(5, 5, 5, 5) - ex5_dataclasses.Vehicle(5, 9, 5, 5) - - # ccm - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, 5, 0, 5) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, 5, -5, 5) - ex5_dataclasses.Vehicle(5, 5, 1, 5) - ex5_dataclasses.Vehicle(5, 5, 5, 5) - ex5_dataclasses.Vehicle(5, 5, 9, 5) - - # weight - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, 5, 5, 0) - self.assertRaises(BaseException, ex5_dataclasses.Vehicle.__init__, 5, 5, 5, -5) - ex5_dataclasses.Vehicle(5, 5, 5, 1) - ex5_dataclasses.Vehicle(5, 5, 5, 5) - ex5_dataclasses.Vehicle(5, 5, 5, 9) - - @no_input_test - def test4_Vehicle_fun_factor(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - v1 = ex5_dataclasses.Vehicle(1, 1, 1, 1) - v2 = ex5_dataclasses.Vehicle(2, 1, 4, 2) - v3 = ex5_dataclasses.Vehicle(1, 4, 5, 2) - v4 = ex5_dataclasses.Vehicle(5, 6, 3, 9) - v5 = ex5_dataclasses.Vehicle(3, 1, 6, 2) - v6 = ex5_dataclasses.Vehicle(4, 2, 7, 1) - - self.assertEqual(v1.fun_factor(), 11) - self.assertEqual(v2.fun_factor(), 7) - self.assertEqual(v3.fun_factor(), 22.5) - self.assertEqual(v4.fun_factor(), 7) - self.assertEqual(v5.fun_factor(), 8) - self.assertEqual(v6.fun_factor(), 27) - - @no_input_test - def test4_Vehicle_gt(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - v1 = ex5_dataclasses.Vehicle(1, 1, 1, 1) - v2 = ex5_dataclasses.Vehicle(2, 1, 4, 2) - v3 = ex5_dataclasses.Vehicle(1, 4, 5, 2) - v4 = ex5_dataclasses.Vehicle(5, 6, 3, 9) - v5 = ex5_dataclasses.Vehicle(3, 1, 6, 2) - v6 = ex5_dataclasses.Vehicle(4, 2, 7, 1) - - self.assertTrue(v1 > v2) - self.assertTrue(v3 > v2) - self.assertTrue(v6 > v3) - self.assertTrue(v5 > v4) - self.assertTrue(v5 > v2) - - @no_input_test - def test4_Car(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - self.assertTrue(is_dataclass(ex5_dataclasses.Car)) - self.assertTrue(issubclass(ex5_dataclasses.Car, ex5_dataclasses.Vehicle)) - self.assertTrue(check_attributes(ex5_dataclasses.Car, ["seats", "hp", "ccm", "weight"], ["spoiler"])) - self.assertDictEqual(ex5_dataclasses.Car.__annotations__, {"spoiler": bool}) - self.assertTrue(ex5_dataclasses.Car.__post_init__ is ex5_dataclasses.Vehicle.__post_init__) - self.assertTrue(check_function_used(ex5_dataclasses.Car.fun_factor, "super")) - c1 = ex5_dataclasses.Car(5, 5, 5, 5, True) - c2 = ex5_dataclasses.Car(5, 5, 5, 5, False) - with patch.object(ex5_dataclasses.Vehicle, "fun_factor", return_value=1337): - self.assertEqual(c1.fun_factor(), 1337.2) - self.assertEqual(c2.fun_factor(), 1337) - - @no_input_test - def test4_Motorcycle(self): - global output - output = "" - with Timeout(2): - import ex5_dataclasses - self.assertTrue(is_dataclass(ex5_dataclasses.Motorcycle)) - self.assertTrue(issubclass(ex5_dataclasses.Motorcycle, ex5_dataclasses.Vehicle)) - self.assertTrue(check_attributes(ex5_dataclasses.Motorcycle, ["seats", "hp", "ccm", "weight"], ["sidecar"])) - self.assertDictEqual(ex5_dataclasses.Motorcycle.__annotations__, {"sidecar": bool}) - self.assertTrue(check_function_used(ex5_dataclasses.Motorcycle.fun_factor, "super")) - with patch("ex5_dataclasses.Vehicle.__post_init__") as vehicle_post_init: - ex5_dataclasses.Motorcycle(3, 1, 1, 1, True) - vehicle_post_init.assert_called_once() - self.assertRaises(BaseException, ex5_dataclasses.Motorcycle.__init__, 3, 1, 1, 1, False) - self.assertRaises(BaseException, ex5_dataclasses.Motorcycle.__init__, 6, 1, 1, 1, False) - self.assertRaises(BaseException, ex5_dataclasses.Motorcycle.__init__, 1, 1, 1, 1, True) - self.assertRaises(BaseException, ex5_dataclasses.Motorcycle.__init__, 4, 1, 1, 1, True) - with patch.object(ex5_dataclasses.Vehicle, "fun_factor", return_value=1337): - m1 = ex5_dataclasses.Motorcycle(3, 5, 5, 5, True) - m2 = ex5_dataclasses.Motorcycle(2, 5, 5, 5, False) - self.assertAlmostEqual(m1.fun_factor(), 3208.8) - self.assertAlmostEqual(m2.fun_factor(), 668.5) - - -class Ex5_automaton(unittest.TestCase): - def test5_global_statements(self): - check_global_statements(self, "ex4_automaton") - - @no_input_test - def test5_State(self): - global output - output = "" - with Timeout(2): - import ex4_automaton - self.assertTrue(issubclass(ex4_automaton.State, Enum)) - self.assertFalse(is_dataclass(ex4_automaton.State)) - states = ex4_automaton.State._member_names_ - self.assertTrue(states == ["q0", "q1", "q2", "qe"] or states == ["Q0", "Q1", "Q2", "QE"]) - - @no_input_test - def test5_delta_annot(self): - global output - output = "" - with Timeout(2): - from ex4_automaton import delta, Alphabet, State - self.assertTrue(check_annot(delta, [State, Alphabet], ret=State)) - - @no_input_test - def test5_delta_match(self): - global output - output = "" - with Timeout(2): - import ex4_automaton - self.assertTrue(check_pattern_matching_used(ex4_automaton.delta)) - - @no_input_test - def test5_delta(self): - global output - output = "" - with Timeout(2): - import ex4_automaton - q0 = ex4_automaton.State.q0 if "q0" in ex4_automaton.State._member_names_ else ex4_automaton.State.Q0 - q1 = ex4_automaton.State.q1 if "q1" in ex4_automaton.State._member_names_ else ex4_automaton.State.Q1 - q2 = ex4_automaton.State.q2 if "q2" in ex4_automaton.State._member_names_ else ex4_automaton.State.Q2 - qe = ex4_automaton.State.qe if "qe" in ex4_automaton.State._member_names_ else ex4_automaton.State.QE - self.assertEqual(ex4_automaton.delta(q0, "a"), q1) - self.assertEqual(ex4_automaton.delta(q1, "a"), q0) - self.assertEqual(ex4_automaton.delta(q1, "b"), q1) - self.assertEqual(ex4_automaton.delta(q0, "b"), q2) - self.assertEqual(ex4_automaton.delta(q2, "a"), q2) - self.assertEqual(ex4_automaton.delta(q2, "c"), q1) - self.assertEqual(ex4_automaton.delta(q2, "b"), qe) - - @no_input_test - def test5_automaton(self): - global output - output = "" - with Timeout(2): - import ex4_automaton - M = ex4_automaton.automaton() - self.assertEqual(resolve_type_alias(ex4_automaton.Alphabet), resolve_type_alias(Literal["a", "b", "c"])) - self.assertEqual(M.delta, ex4_automaton.delta) - self.assertEqual(M.start, ex4_automaton.State.q0 if "q0" in ex4_automaton.State._member_names_ else ex4_automaton.State.Q0) - self.assertEqual(M.finals, frozenset({ex4_automaton.State.q0 if "q0" in ex4_automaton.State._member_names_ else ex4_automaton.State.Q0})) - self.assertTrue(check_annot(ex4_automaton.automaton, [], ex4_automaton.Automaton[ex4_automaton.State, ex4_automaton.Alphabet])) - - -class Ex6_recursion(unittest.TestCase): - def test6_global_statements(self): - check_global_statements(self, "ex6_recursion") - - @no_input_test - def test6_annot(self): - global output - output = "" - with Timeout(2): - import ex6_recursion - type_params = ex6_recursion.filter_tree.__type_params__ - self.assertEqual(len(type_params), 1) - T = type_params[0] - self.assertTrue(check_annot(ex6_recursion.filter_tree, [Callable[[T], bool], ex6_recursion.Tree[T]], list[T])) - self.assertTrue(check_annot(ex6_recursion.mirror_tree, [ex6_recursion.Tree[Any]], None)) - - @no_input_test - def test6_filter_tree(self): - global output - output = "" - with Timeout(2): - import ex6_recursion - Node = ex6_recursion.Node - example_node1 = Node("zero", Node("one"), Node("two", Node("three"), Node("four"))) - example_node2 = Node(0, Node(5, Node(3)), Node(1)) - example_node3 = None - example_node4 = Node(0) - example_node5 = Node(1, Node(2), Node(3)) - self.assertListEqual(ex6_recursion.filter_tree(lambda x: 'e' in x, example_node1), ['zero', 'one', 'three']) - self.assertListEqual(ex6_recursion.filter_tree(lambda x: 'o' in x, example_node1), ['zero', 'one', 'two', 'four']) - self.assertListEqual(ex6_recursion.filter_tree(lambda _: False, example_node1), []) - self.assertListEqual(ex6_recursion.filter_tree(lambda _: True, None), []) - self.assertListEqual(ex6_recursion.filter_tree(lambda x: x % 2 == 0, example_node5), [2]) - self.assertListEqual(ex6_recursion.filter_tree(lambda x: x < 0, example_node4), []) - self.assertListEqual(ex6_recursion.filter_tree(lambda x: True, example_node3), []) - self.assertTrue(check_no_sideeffects(ex6_recursion.filter_tree, lambda x: len(x) == 3, example_node1)) - - @no_input_test - def test6_mirror_tree(self): - global output - output = "" - with Timeout(2): - import ex6_recursion - Node = ex6_recursion.Node - example_node1 = Node("zero", Node("one"), Node("two", Node("three"), Node("four"))) - example_node2 = Node(0, Node(5, Node(3)), Node(1)) - example_node3 = None - example_node4 = Node(0) - example_node5 = Node(1, Node(2), Node(3)) - self.assertIsNone(ex6_recursion.mirror_tree(example_node1)) - example_node1 = Node("zero", Node("one"), Node("two", Node("three"), Node("four"))) - - ex6_recursion.mirror_tree(example_node2) - self.assertEqual(example_node2, Node(0, Node(1), Node(5, None, Node(3)))) - ex6_recursion.mirror_tree(example_node2) - self.assertEqual(example_node2, Node(0, Node(5, Node(3)), Node(1))) - ex6_recursion.mirror_tree(example_node1) - self.assertEqual(example_node1, Node("zero", Node("two", Node("four"), Node("three")), Node("one"))) - x = None - ex6_recursion.mirror_tree(x) - self.assertIsNone(x) - - # mirror twice - ex6_recursion.mirror_tree(example_node5) - ex6_recursion.mirror_tree(example_node5) - self.assertEqual(example_node5, Node(1, Node(2), Node(3))) - - -class Ex7_generators(unittest.TestCase): - def test7_global_statements(self): - check_global_statements(self, "ex7_generators") - - @no_input_test - def test7_annot(self): - global output - output = "" - with Timeout(2): - import ex7_generators - type_params = ex7_generators.drop.__type_params__ - self.assertEqual(len(type_params), 1) - T = type_params[0] - self.assertTrue(check_annot(ex7_generators.drop, [Iterable[T], int], Iterator[T])) - - type_params = ex7_generators.split.__type_params__ - self.assertEqual(len(type_params), 1) - T = type_params[0] - self.assertTrue(check_annot(ex7_generators.split, [Iterable[T], T], Iterator[list[T]])) - - type_params = ex7_generators.apply_pairs.__type_params__ - self.assertEqual(len(type_params), 2) - T, R = type_params - self.assertTrue(check_annot(ex7_generators.apply_pairs, [Iterable[T], Callable[[T, T], R]], Iterator[R])) - - @no_input_test - def test7_drop(self): - global output - output = "" - with Timeout(2): - import ex7_generators - self.assertTrue(check_function_not_used(ex7_generators.drop, "list")) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure([2, 4, 6, 8, 10, 12]), 3), [8, 10, 12])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure([True, False, False]), 0), [True, False, False])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure(["a", "b", "c", "d"]), 8), [])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure(range(1, 4)), 1), [2, 3])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure([1, 1, 1, 1]), 0), [1, 1, 1, 1])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure([]), 0), [])) - self.assertTrue(check_gen(ex7_generators.drop(IterablePure(), 178), range(178, 1000), False, 1000)) - - @no_input_test - def test7_split(self): - global output - output = "" - with Timeout(2): - import ex7_generators - g1 = ex7_generators.split(IterablePure([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 5) - self.assertTrue(check_gen(g1, [list(range(1, 5)), list(range(6, 11))])) - g2 = ex7_generators.split(IterablePure("abcdefghij", True), "e") - self.assertTrue(check_gen(g2, [list("abcd")] + [list("fghijabcd")] * 999, False, 1000)) - g3 = ex7_generators.split(IterablePure("mississippiXXX", False), "i") - self.assertTrue(check_gen(g3, [list("m"), list("ss"), list("ss"), list("pp"), list("XXX")])) - g4 = ex7_generators.split(IterablePure(("Hallo", "Welt", "asdfa", "?", "asdfa", "wsgd", "Nöö", "asdfa", "Nix da"), False), "asdfa") - self.assertTrue(check_gen(g4, [["Hallo", "Welt"], ["?"], ["wsgd", "Nöö"], ["Nix da"]])) - g5 = ex7_generators.split(IterablePure("abcdefghij", True), "a") - self.assertTrue(check_gen(g5, [[]] + [list("bcdefghij")] * 999, False, 1000)) - - g1 = ex7_generators.split(IterablePure([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 10) - self.assertTrue(check_gen(g1, [list(range(1, 10)), []])) - g2 = ex7_generators.split(IterablePure("abcdjjefjjghi"), "j") - self.assertTrue(check_gen(g2, [list("abcd"), [], list("ef"), [], list("ghi")])) - - @no_input_test - def test7_apply_pairs(self): - global output - output = "" - with Timeout(2): - import ex7_generators - check_function_not_used(ex7_generators.apply_pairs, "list") - - sub = lambda x, y: x - y - eq = lambda x, y: x == y - add_1 = lambda x, y: x + y + 1 - - g1 = ex7_generators.apply_pairs(IterablePure([5, 2, 7, 9, 1]), sub) - self.assertTrue(check_gen(g1, [3, -5, -2, 8])) - g2 = ex7_generators.apply_pairs(IterablePure("abaabbc", repeat=True), eq) - self.assertTrue(check_gen(g2, [False, False, True, False, True, False, False] * 100, False, 700)) - g3 = ex7_generators.apply_pairs(IterablePure([1]), sub) - self.assertTrue(check_gen(g3, [])) - g4 = ex7_generators.apply_pairs(IterablePure([None, None, "", None]), eq) - self.assertTrue(check_gen(g4, [True, False, False])) - g5 = ex7_generators.apply_pairs(IterablePure([0, 1, 1, 0, 1]), lambda x, y: (x + y) % 2) - self.assertTrue(check_gen(g5, [1, 0, 1, 1])) - g6 = ex7_generators.apply_pairs(IterablePure([0, 1, 1, 0, 1]), lambda x, y: x * y) - self.assertTrue(check_gen(g6, [0, 1, 0, 0])) - g7 = ex7_generators.apply_pairs(IterablePure([1, 0]), sub) - self.assertTrue(check_gen(g7, [1])) - g8 = ex7_generators.apply_pairs(IterablePure([1, 0], True), add_1) - self.assertTrue(check_gen(g8, [2, 2] * 1000, False, 1000)) - - -class Ex8_fp(unittest.TestCase): - def test8_global_statements(self): - check_global_statements(self, "ex8_fp") - - @no_input_test - def test8_annot(self): - global output - output = "" - with Timeout(2): - import ex8_fp - if ex8_fp.sum_0.__name__ == '': - self.assertTrue(check_lambda_annotations(ex8_fp, 'sum_0', [list[Callable[[float], float]]], float)) - else: - self.assertTrue(check_annot(ex8_fp.sum_0, [list[Callable[[float], float]]], float)) - - type_params = ex8_fp.extensionally_equal.__type_params__ - self.assertEqual(len(type_params), 2) - T, R = type_params - self.assertTrue(check_annot(ex8_fp.extensionally_equal, [Callable[[T], R], Callable[[T], R], list[T]], bool)) - - if ex8_fp.map_matrix.__name__ == '': - self.assertTrue(check_lambda_annotations(ex8_fp, 'map_matrix', [Callable[[float], float], list[list[float]]], list[list[float]])) - else: - self.assertTrue(check_annot(ex8_fp.map_matrix, [Callable[[float], float], list[list[float]]], list[list[float]])) - - @no_input_test - def test8_sum_0(self): - global output - output = "" - with Timeout(2): - import ex8_fp - self.assertTrue(check_only_one_line(ex8_fp.sum_0)) - f = lambda x: x + 1 - self.assertEqual(ex8_fp.sum_0([f]), 1) - self.assertEqual(ex8_fp.sum_0([f, f, f]), 3) - - f = lambda x: x + 1 - g = lambda x: x**2 - self.assertEqual(ex8_fp.sum_0([f, g]), 1) - - f = lambda x: x % 12 - g = lambda x: x**x - h = lambda _: 1337.333 - self.assertTrue(math.isclose(ex8_fp.sum_0([f, g, h]), 1338.333)) - - self.assertEqual(ex8_fp.sum_0([]), 0) - - @no_input_test - def test8_extensionally_equal(self): - global output - output = "" - with Timeout(2): - import ex8_fp - self.assertTrue(check_only_one_line(ex8_fp.extensionally_equal)) - f = lambda x: x * 2 - 1 - g = lambda y: y * (4 / 2) - 1 - self.assertTrue(ex8_fp.extensionally_equal(f, g, [1, 2, 3, 4, 5])) - h = lambda x: x ** 2 - 4 - k = lambda x: (x - 2) * (x + 2) - self.assertTrue(ex8_fp.extensionally_equal(h, k, [1, 5, 3, 7, 3])) - l = lambda y: y < 4 - le = lambda x: x <= 4 - self.assertTrue(ex8_fp.extensionally_equal(l, le, [1, 2, 3])) - - g = lambda y: y * (4 / 2) - 1 - k = lambda x: (x - 2) * (x + 2) - self.assertFalse(ex8_fp.extensionally_equal(g, k, [1])) - self.assertFalse(ex8_fp.extensionally_equal(g, k, [0])) - self.assertFalse(ex8_fp.extensionally_equal(g, k, [1, 3])) - l = lambda y: y < 4 - le = lambda x: x <= 4 - self.assertFalse(ex8_fp.extensionally_equal(l, le, [1, 2, 3, 4])) - - @no_input_test - def test8_map_matrix(self): - global output - output = "" - with Timeout(2): - import ex8_fp - self.assertTrue(check_only_one_line(ex8_fp.map_matrix)) - self.assertFalse(check_comprehension_used(ex8_fp.map_matrix)) - self.assertTrue(check_function_used(ex8_fp.map_matrix, "map")) - self.assertTrue(check_function_used(ex8_fp.map_matrix, "list")) - - example = [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]] - self.assertListEqual(ex8_fp.map_matrix(lambda x: x * 2, example), [[2, 4, 6], [8, 10, 12]]) - example2 = [[2, 5], [5, 6]] - self.assertListEqual(ex8_fp.map_matrix(lambda x: x ** 2, example2), [[4, 25], [25, 36]]) - self.assertListEqual(ex8_fp.map_matrix(lambda y: y < 5, example2), [[True, False], [False, False]]) - self.assertListEqual(ex8_fp.map_matrix(lambda x: x, []), []) - - -def get_results(): - result_data = {} - output = io.StringIO("") - test_classes = [(name, cls) for name, cls in inspect.getmembers(sys.modules[__name__], lambda x: inspect.isclass( - x) and (x.__module__ == __name__)) if unittest.TestCase in cls.__mro__] - suite = unittest.TestLoader().loadTestsFromTestCase(test_classes[0][1]) - for other in test_classes[1:]: - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(other[1])) - testResult = unittest.TextTestRunner(stream=output, verbosity=2).run(suite) - result_data["tests"] = [str(test_method) for test in test_classes - for test_method in unittest.TestLoader().loadTestsFromTestCase(test[1])] - result_data["failure"] = not testResult.wasSuccessful() - result_data["tests_run"] = testResult.testsRun - result_data["failures"] = [(str(func), str(err)) - for func, err in testResult.failures] - result_data["errors"] = [(str(func), str(err)) - for func, err in testResult.errors] - return result_data - - -if __name__ == "__main__": - docker_run = True - try: - with open("/output/output.json", "w", encoding="utf-8") as f: - result = get_results() - json.dump(result, f) - except FileNotFoundError: - docker_run = False - if not docker_run: - unittest.main() diff --git a/test_ex6.py b/test_ex6.py new file mode 100644 index 0000000..417c0f6 --- /dev/null +++ b/test_ex6.py @@ -0,0 +1,425 @@ +from dataclasses import dataclass, field, fields, is_dataclass, InitVar +from types import NoneType, FunctionType, GenericAlias +from typing import get_args, Callable, Iterable, Iterator, Type, Optional, TypeAliasType, ForwardRef, Any, Literal +from enum import Enum +import unittest +from unittest import mock +from unittest.mock import patch +from functools import wraps +import signal +import io +import importlib +import importlib.util +import sys +import subprocess +import os +import shutil +import re +import math +import inspect +import json +import ast +import copy +import functools +import itertools + +output = "" + + +class TimeoutException(Exception): + pass + + +class Timeout: + def __init__(self, seconds, msg=None) -> None: + if msg is None: + msg = f"Test timed out after {seconds} seconds." + self.seconds = seconds + self.msg = msg + + def handle_timeout(self, signal, frame): + raise TimeoutException(self.msg) + + def __enter__(self): + signal.signal(signal.SIGALRM, self.handle_timeout) + signal.alarm(self.seconds) + + def __exit__(self, exc_type, exc_val, exc_tb): + signal.alarm(0) + + +class IterablePure: + def __init__(self, i: Optional[Iterable] = None, repeat: bool = False): + if i is not None: + self.i = i + else: + def endless(): + c = 0 + while True: + yield c + c += 1 + self.i = endless() + + self.repeat = repeat + + def __iter__(self): + if self.repeat: + while True: + yield from self.i + else: + yield from self.i + + +def resolve_type_alias(t: Type) -> Type: + while isinstance(t, TypeAliasType | GenericAlias) and hasattr(t, "__value__"): + if isinstance(t, TypeAliasType): + t = t.__value__ + elif isinstance(t, GenericAlias): + t = t.__value__[*t.__args__] + return t + + +def check_annot(function: Callable, expected: list[Type], ret=None): + actual = function.__annotations__ + if "self" in actual: + del actual["self"] + return_type = actual["return"] if "return" in actual else None + actual = list(actual.values())[ + :-1] if "return" in actual else list(actual.values()) + for a, e in zip(actual, expected): + a = resolve_type_alias(a) + e = resolve_type_alias(e) + if a != e: + return False + return resolve_type_alias(ret) == resolve_type_alias(return_type) + + +def check_lambda_annotations(module, f_name: str, param_types: list[object], return_type: object = None) -> bool: + annotation = module.__annotations__[f_name] + if annotation.__name__ != 'Callable': + return False + + all_types = annotation.__args__ + types, ret_type = all_types[:-1], all_types[-1] + if ret_type != return_type: + return False + + for param, param_type in zip(types, param_types): + while isinstance(param, TypeAliasType): + param = param.__value__ + while isinstance(param_type, TypeAliasType): + param_type = param_type.__value__ + if param != param_type: + return False + return True + + +def check_attributes(o: object, inherited_attr: list[str], new_attr: list[str]) -> bool: + attr = [f.name for f in fields(o)] + if attr != inherited_attr + new_attr: + return False + + for attr in inherited_attr: + if attr in o.__annotations__: + return False + return True + + +def check_no_if_used(f: Callable) -> bool: + tree = ast.parse(inspect.getsource(f)) + for node in ast.walk(tree): + if isinstance(node, ast.If): + return False + return True + + +def check_comprehension_used(f: Callable) -> bool: + source = inspect.getsource(f) + tree = ast.parse(source) + + for node in ast.walk(tree): + if isinstance(node, (ast.ListComp, ast.SetComp, ast.DictComp, ast.GeneratorExp)): + return True + return False + + +def check_no_sideeffects(f: Callable, *args) -> bool: + args_copy = tuple(copy.deepcopy(a) for a in args) + f(*args) + return args == args_copy + + +def check_function_used(f: Callable, name: str) -> bool: + source = inspect.getsource(f) + if source.startswith(4 * " "): + source = "\n".join(l[4:] for l in source.split("\n")) + return name in [c.func.id for c in ast.walk(ast.parse(source)) if isinstance(c, ast.Call) and isinstance(c.func, ast.Name)] + + +def check_function_not_used(f: Callable, name: str) -> bool: + source = inspect.getsource(f) + if source.startswith(4 * " "): + source = "\n".join(l[4:] for l in source.split("\n")) + return name not in [c.func.id for c in ast.walk(ast.parse(source)) if isinstance(c, ast.Call) and isinstance(c.func, ast.Name)] + + +def check_pattern_matching_used(f: Callable) -> bool: + source = inspect.getsource(f) + tree = ast.parse(source) + return any(isinstance(node, ast.Match) for node in ast.walk(tree)) + + +def check_gen(g: Iterator, res: Iterable, check_end: bool = True, max: int = 100) -> bool: + if not isinstance(g, Iterator): + return False + for i, x in enumerate(res): + el = next(g) + if el != x: + return False + if i >= max: + break + if check_end: + try: + next(g) + except StopIteration: + return True + return False + return True + + +def check_only_one_line(f: Callable) -> bool: + if f.__name__ == '': + return True + inspect.getsource(f) + lines = [line for line in inspect.getsource(f).split( + '\n') if not line.strip().startswith('#') and line.strip() != ''] + return len(lines) == 2 + + +def mock_print(*args, sep=None, end=None, **_kwargs): + global output + if sep is None: + sep = " " + if end is None: + end = "\n" + args = [str(a) for a in args] + output += str(sep.join(args)) + end + + +def mock_input(*arg: str): + inputs = [s for s in arg] + + def input_function(arg=None): + if arg is None: + arg = "" + nonlocal inputs + if len(inputs) == 0: + raise Exception("More input asked than given") + p = inputs[0] + inputs = inputs[1:] + mock_print(arg, p, sep="") + return p + return input_function + + +def input_error(*arg): + raise Exception("Input is not allowed here") + + +@patch("builtins.print", mock_print) +@patch("builtins.input", input_error) +def check_global_statements(unit: unittest.TestCase, module_name: str): + global output + output = "" + with Timeout(2): + if module_name in sys.modules.keys(): + del sys.modules[module_name] + module = importlib.import_module(module_name) + unit.assertEqual(output, "") + has_global_asserts = any(isinstance(node, ast.Assert) + for node in ast.iter_child_nodes(ast.parse(inspect.getsource(module)))) + unit.assertFalse(has_global_asserts) + + +def no_input_test(test_function: Callable) -> Callable: + @wraps(test_function) + @patch("builtins.print", mock_print) + @patch("builtins.input", input_error) + def inner(self): + global output + output = "" + with Timeout(2): + test_function(self) + return inner + + +class Ex6a_sum_of_subtree(unittest.TestCase): + def test6_global_statements(self): + check_global_statements(self, "ex6_recursion") + + def test6_test_pattern_matching_sum_of_subtree(self): + with Timeout(2): + import ex6_recursion + check_pattern_matching_used(ex6_recursion.cut_at) + + @no_input_test + def test6_annot_sum_of_subtree(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + self.assertTrue(check_annot(ex6_recursion.sum_of_subtree, [ + ex6_recursion.BTree[int]], int)) + + @no_input_test + def test6_sum_of_subtree_basisfall(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + sum_of_subtree = ex6_recursion.sum_of_subtree + tree = None + self.assertEqual(sum_of_subtree(tree), 0) + self.assertIsNone(tree) + + @no_input_test + def test6_sum_of_subtree(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + sum_of_subtree = ex6_recursion.sum_of_subtree + Node = ex6_recursion.Node + tree = Node(1, Node(2, Node(3), Node(4)), Node(5, Node(6))) + self.assertEqual(sum_of_subtree(tree), 21) + self.assertEqual(tree, Node(mark=21, left=Node(mark=9, left=Node(mark=3, left=None, right=None), right=Node( + mark=4, left=None, right=None)), right=Node(mark=11, left=Node(mark=6, left=None, right=None), right=None))) + single_node_tree = Node(5) + self.assertEqual(sum_of_subtree(single_node_tree), 5) + simple_tree = Node(1, Node(2), Node(3)) + total_sum = sum_of_subtree(simple_tree) + self.assertEqual(total_sum, 6) # 1 + 2 + 3 = 6 + self.assertEqual(simple_tree.mark, 6) + self.assertEqual(simple_tree.left.mark, 2) + self.assertEqual(simple_tree.right.mark, 3) + complex_tree = Node(1, Node(2, Node(3), Node(4)), Node(5, Node(6))) + total_sum = sum_of_subtree(complex_tree) + self.assertEqual(total_sum, 21) # 1 + 2 + 3 + 4 + 5 + 6 = 21 + self.assertEqual(complex_tree.mark, 21) + self.assertEqual(complex_tree.left.mark, 9) # 2 + 3 + 4 = 9 + self.assertEqual(complex_tree.right.mark, 11) # 5 + 6 = 11 + self.assertEqual(complex_tree.left.left.mark, 3) + self.assertEqual(complex_tree.left.right.mark, 4) + self.assertEqual(complex_tree.right.left.mark, 6) + + +class Ex6b_cut_at(unittest.TestCase): + def test6_global_statements(self): + check_global_statements(self, "ex6_recursion") + + def test6_test_pattern_matching_cut_at(self): + with Timeout(2): + import ex6_recursion + check_pattern_matching_used(ex6_recursion.cut_at) + + def test6_test_no_side_effects_cut_at(self): + with Timeout(2): + import ex6_recursion + Node = ex6_recursion.Node + tree = Node(1, Node(2, Node(3), Node(4)), + Node(3, Node(3), Node(6))) + check_no_sideeffects(ex6_recursion.cut_at, tree, 3) + + @no_input_test + def test6_annot_cut_at(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + self.assertTrue(check_annot(ex6_recursion.sum_of_subtree, [ + ex6_recursion.BTree[int]], int)) + type_params = ex6_recursion.cut_at.__type_params__ + self.assertEqual(len(type_params), 1) + T = type_params[0] + self.assertTrue(check_annot(ex6_recursion.cut_at, [ + ex6_recursion.BTree[T]], ex6_recursion.BTree[T])) + + @no_input_test + def test6_cut_at_basisfall(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + cut_at = ex6_recursion.cut_at + tree = None + self.assertIsNone(cut_at(tree, 42)) + + @no_input_test + def test6_cut_at(self): + global output + output = "" + with Timeout(2): + import ex6_recursion + Node = ex6_recursion.Node + cut_at = ex6_recursion.cut_at + tree = Node(1, Node(2, Node(3), Node(4)), + Node(3, Node(3), Node(6))) + self.assertIsNone(cut_at(tree, 1)) + self.assertEqual(cut_at(tree, 3), Node(mark=1, left=Node( + mark=2, left=None, right=Node(mark=4, left=None, right=None)), right=None)) + single_node_tree = Node(5) + new_tree = cut_at(single_node_tree, 10) + self.assertIsNotNone(new_tree) + self.assertEqual(new_tree.mark, 5) + self.assertIsNone(new_tree.left) + self.assertIsNone(new_tree.right) + tree_without_cut = Node( + 1, Node(2, Node(3), Node(4)), Node(5, Node(6))) + new_tree = cut_at(tree_without_cut, 42) # No node has value 42 + self.assertIsNotNone(new_tree) + self.assertEqual(new_tree.mark, 1) + self.assertIsNotNone(new_tree.left) + self.assertIsNotNone(new_tree.right) + tree_with_cut = Node( + 1, Node(2, Node(3), Node(4)), Node(3, Node(3), Node(6))) + new_tree = cut_at(tree_with_cut, 3) # Cut all nodes with value 3 + self.assertIsNotNone(new_tree) + self.assertEqual(new_tree.mark, 1) + self.assertEqual(new_tree.left.mark, 2) + self.assertIsNone(new_tree.right) # The right subtree is removed + self.assertIsNone(new_tree.left.left) # Node(3) is removed + self.assertIsNotNone(new_tree.left.right) + self.assertEqual(new_tree.left.right.mark, 4) # Node(4) remains + + +def get_results(): + result_data = {} + output = io.StringIO("") + test_classes = [(name, cls) for name, cls in inspect.getmembers(sys.modules[__name__], lambda x: inspect.isclass( + x) and (x.__module__ == __name__)) if unittest.TestCase in cls.__mro__] + suite = unittest.TestLoader().loadTestsFromTestCase(test_classes[0][1]) + for other in test_classes[1:]: + suite.addTest(unittest.TestLoader().loadTestsFromTestCase(other[1])) + testResult = unittest.TextTestRunner(stream=output, verbosity=2).run(suite) + result_data["tests"] = [str(test_method) for test in test_classes + for test_method in unittest.TestLoader() + .loadTestsFromTestCase(test[1])] + result_data["failure"] = not testResult.wasSuccessful() + result_data["tests_run"] = testResult.testsRun + result_data["failures"] = [(str(func), str(err)) + for func, err in testResult.failures] + result_data["errors"] = [(str(func), str(err)) + for func, err in testResult.errors] + return result_data + + +if __name__ == "__main__": + docker_run = True + try: + with open("/output/output.json", "w", encoding="utf-8") as f: + result = get_results() + json.dump(result, f) + except FileNotFoundError: + docker_run = False + if not docker_run: + unittest.main()