File: test_whiteutils.py

package info (click to toggle)
python-cogapp 3.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 388 kB
  • sloc: python: 3,449; makefile: 79
file content (96 lines) | stat: -rw-r--r-- 4,031 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
"""Test the cogapp.whiteutils module."""

from unittest import TestCase

from .whiteutils import common_prefix, reindent_block, white_prefix


class WhitePrefixTests(TestCase):
    """Test cases for cogapp.whiteutils."""

    def test_single_line(self):
        self.assertEqual(white_prefix([""]), "")
        self.assertEqual(white_prefix([" "]), "")
        self.assertEqual(white_prefix(["x"]), "")
        self.assertEqual(white_prefix([" x"]), " ")
        self.assertEqual(white_prefix(["\tx"]), "\t")
        self.assertEqual(white_prefix(["  x"]), "  ")
        self.assertEqual(white_prefix([" \t \tx   "]), " \t \t")

    def test_multi_line(self):
        self.assertEqual(white_prefix(["  x", "  x", "  x"]), "  ")
        self.assertEqual(white_prefix(["   y", "  y", " y"]), " ")
        self.assertEqual(white_prefix([" y", "  y", "   y"]), " ")

    def test_blank_lines_are_ignored(self):
        self.assertEqual(white_prefix(["  x", "  x", "", "  x"]), "  ")
        self.assertEqual(white_prefix(["", "  x", "  x", "  x"]), "  ")
        self.assertEqual(white_prefix(["  x", "  x", "  x", ""]), "  ")
        self.assertEqual(white_prefix(["  x", "  x", "          ", "  x"]), "  ")

    def test_tab_characters(self):
        self.assertEqual(white_prefix(["\timport sys", "", "\tprint sys.argv"]), "\t")

    def test_decreasing_lengths(self):
        self.assertEqual(white_prefix(["   x", "  x", " x"]), " ")
        self.assertEqual(white_prefix(["     x", " x", " x"]), " ")


class ReindentBlockTests(TestCase):
    """Test cases for cogapp.reindentBlock."""

    def test_non_term_line(self):
        self.assertEqual(reindent_block(""), "")
        self.assertEqual(reindent_block("x"), "x")
        self.assertEqual(reindent_block(" x"), "x")
        self.assertEqual(reindent_block("  x"), "x")
        self.assertEqual(reindent_block("\tx"), "x")
        self.assertEqual(reindent_block("x", " "), " x")
        self.assertEqual(reindent_block("x", "\t"), "\tx")
        self.assertEqual(reindent_block(" x", " "), " x")
        self.assertEqual(reindent_block(" x", "\t"), "\tx")
        self.assertEqual(reindent_block(" x", "  "), "  x")

    def test_single_line(self):
        self.assertEqual(reindent_block("\n"), "\n")
        self.assertEqual(reindent_block("x\n"), "x\n")
        self.assertEqual(reindent_block(" x\n"), "x\n")
        self.assertEqual(reindent_block("  x\n"), "x\n")
        self.assertEqual(reindent_block("\tx\n"), "x\n")
        self.assertEqual(reindent_block("x\n", " "), " x\n")
        self.assertEqual(reindent_block("x\n", "\t"), "\tx\n")
        self.assertEqual(reindent_block(" x\n", " "), " x\n")
        self.assertEqual(reindent_block(" x\n", "\t"), "\tx\n")
        self.assertEqual(reindent_block(" x\n", "  "), "  x\n")

    def test_real_block(self):
        self.assertEqual(
            reindent_block("\timport sys\n\n\tprint sys.argv\n"),
            "import sys\n\nprint sys.argv\n",
        )


class CommonPrefixTests(TestCase):
    """Test cases for cogapp.commonPrefix."""

    def test_degenerate_cases(self):
        self.assertEqual(common_prefix([]), "")
        self.assertEqual(common_prefix([""]), "")
        self.assertEqual(common_prefix(["", "", "", "", ""]), "")
        self.assertEqual(common_prefix(["cat in the hat"]), "cat in the hat")

    def test_no_common_prefix(self):
        self.assertEqual(common_prefix(["a", "b"]), "")
        self.assertEqual(common_prefix(["a", "b", "c", "d", "e", "f"]), "")
        self.assertEqual(common_prefix(["a", "a", "a", "a", "a", "x"]), "")

    def test_usual_cases(self):
        self.assertEqual(common_prefix(["ab", "ac"]), "a")
        self.assertEqual(common_prefix(["aab", "aac"]), "aa")
        self.assertEqual(common_prefix(["aab", "aab", "aab", "aac"]), "aa")

    def test_blank_line(self):
        self.assertEqual(common_prefix(["abc", "abx", "", "aby"]), "")

    def test_decreasing_lengths(self):
        self.assertEqual(common_prefix(["abcd", "abc", "ab"]), "ab")