From 3c05971b6596ead172e332cc9c409029c40c76d8 Mon Sep 17 00:00:00 2001 From: Meysam Azad Date: Thu, 8 Oct 2020 10:37:03 +0330 Subject: [PATCH 1/2] test: add test case for linked-list version of is-palindrome Fixes #2128 --- .../linked_list/tests/test_is_palindrome.py | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 data_structures/linked_list/tests/test_is_palindrome.py diff --git a/data_structures/linked_list/tests/test_is_palindrome.py b/data_structures/linked_list/tests/test_is_palindrome.py new file mode 100644 index 000000000000..08b7ee8d0628 --- /dev/null +++ b/data_structures/linked_list/tests/test_is_palindrome.py @@ -0,0 +1,94 @@ +import pytest + +from typing import Any +from dataclasses import dataclass + + +from data_structures.linked_list.is_palindrome import ( + is_palindrome, + is_palindrome_dict, + is_palindrome_stack, +) + + +@dataclass +class Node: + val: Any + next: "Node" = None + + +@pytest.fixture +def single_char() -> Node: + return Node("a") + + +@pytest.fixture +def kayake() -> Node: + e = Node("e") + k = Node("k", e) + a = Node("a", k) + y = Node("y", a) + a = Node("a", y) + k = Node("k", a) + return k + + +@pytest.fixture +def racecar() -> Node: + r = Node("r") + a = Node("a", r) + c = Node("c", a) + e = Node("e", c) + c = Node("c", e) + a = Node("a", c) + r = Node("r", a) + return r + +@pytest.fixture +def stats() -> Node: + s = Node("s") + t = Node("t", s) + a = Node("a", t) + t = Node("t", a) + s = Node("s", t) + return s + + +@pytest.fixture +def computer() -> Node: + r = Node("r") + e = Node("e", r) + t = Node("t", e) + u = Node("u", t) + p = Node("p", u) + m = Node("m", p) + o = Node("o", m) + c = Node("c", o) + return c + + +def test_is_palindrome_correct_result(racecar, stats, computer, kayake, single_char): + assert is_palindrome(None) + assert is_palindrome(single_char) + assert is_palindrome(racecar) + assert is_palindrome(stats) + assert not is_palindrome(kayake) + assert not is_palindrome(computer) + + +def test_is_palindrome_dict_correct_result(racecar, stats, computer, kayake, single_char): + assert is_palindrome_dict(None) + assert is_palindrome_dict(single_char) + assert is_palindrome_dict(racecar) + assert is_palindrome_dict(stats) + assert not is_palindrome_dict(kayake) + assert not is_palindrome_dict(computer) + + +def test_is_palindrome_stack_correct_result(racecar, stats, computer, kayake, single_char): + assert is_palindrome_stack(None) + assert is_palindrome_stack(single_char) + assert is_palindrome_stack(racecar) + assert is_palindrome_stack(stats) + assert not is_palindrome_stack(kayake) + assert not is_palindrome_stack(computer) From b460845be7b2d860a0a782dfe3468b40c8f1bcbf Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Thu, 8 Oct 2020 07:11:13 +0000 Subject: [PATCH 2/2] fixup! Format Python code with psf/black push --- .../linked_list/tests/test_is_palindrome.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/data_structures/linked_list/tests/test_is_palindrome.py b/data_structures/linked_list/tests/test_is_palindrome.py index 08b7ee8d0628..120cee68c6da 100644 --- a/data_structures/linked_list/tests/test_is_palindrome.py +++ b/data_structures/linked_list/tests/test_is_palindrome.py @@ -1,8 +1,7 @@ -import pytest - -from typing import Any from dataclasses import dataclass +from typing import Any +import pytest from data_structures.linked_list.is_palindrome import ( is_palindrome, @@ -44,6 +43,7 @@ def racecar() -> Node: r = Node("r", a) return r + @pytest.fixture def stats() -> Node: s = Node("s") @@ -76,7 +76,9 @@ def test_is_palindrome_correct_result(racecar, stats, computer, kayake, single_c assert not is_palindrome(computer) -def test_is_palindrome_dict_correct_result(racecar, stats, computer, kayake, single_char): +def test_is_palindrome_dict_correct_result( + racecar, stats, computer, kayake, single_char +): assert is_palindrome_dict(None) assert is_palindrome_dict(single_char) assert is_palindrome_dict(racecar) @@ -85,7 +87,9 @@ def test_is_palindrome_dict_correct_result(racecar, stats, computer, kayake, sin assert not is_palindrome_dict(computer) -def test_is_palindrome_stack_correct_result(racecar, stats, computer, kayake, single_char): +def test_is_palindrome_stack_correct_result( + racecar, stats, computer, kayake, single_char +): assert is_palindrome_stack(None) assert is_palindrome_stack(single_char) assert is_palindrome_stack(racecar)