File: test_truncate.py

package info (click to toggle)
python-pyout 0.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 328 kB
  • sloc: python: 3,453; makefile: 3
file content (74 lines) | stat: -rw-r--r-- 2,187 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
# -*- coding: utf-8 -*-

import pytest

from pyout.truncate import _splice as splice
from pyout.truncate import Truncater


def test_splice_non_positive():
    with pytest.raises(ValueError):
        assert splice("", 0)


def test_splice():
    assert splice("", 10) == ("", "")
    assert splice("abc", 10) == ("a", "bc")
    assert splice("abc", 3) == ("a", "bc")
    assert splice("abcefg", 3) == ("a", "fg")


def test_truncate_mark_true():
    fn = Truncater(7, marker=True).truncate

    assert fn(None, "abc") == "abc"
    assert fn(None, "abcdefg") == "abcdefg"
    assert fn(None, "abcdefgh") == "abcd..."


@pytest.mark.parametrize("where", ["left", "center", "right"])
def test_truncate_mark_string(where):
    fn = Truncater(7, marker="…", where=where).truncate

    assert fn(None, "abc") == "abc"
    assert fn(None, "abcdefg") == "abcdefg"

    expected = {"left": "…cdefgh",
                "center": "abc…fgh",
                "right": "abcdef…"}
    assert fn(None, "abcdefgh") == expected[where]


@pytest.mark.parametrize("where", ["left", "center", "right"])
def test_truncate_mark_even(where):
    # Test out a marker with an even number of characters, mostly to get the
    # "center" style on seven characters to be uneven.
    fn = Truncater(7, marker="..", where=where).truncate
    expected = {"left": "..defgh",
                "center": "ab..fgh",
                "right": "abcde.."}
    assert fn(None, "abcdefgh") == expected[where]


@pytest.mark.parametrize("where", ["left", "center", "right"])
def test_truncate_mark_short(where):
    fn = Truncater(2, marker=True, where=where).truncate
    assert fn(None, "abc") == ".."


@pytest.mark.parametrize("where", ["left", "center", "right"])
def test_truncate_nomark(where):
    fn = Truncater(7, marker=False, where=where).truncate

    assert fn(None, "abc") == "abc"
    assert fn(None, "abcdefg") == "abcdefg"

    expected = {"left": "bcdefgh",
                "center": "abcefgh",
                "right": "abcdefg"}
    assert fn(None, "abcdefgh") == expected[where]


def test_truncate_unknown_where():
    with pytest.raises(ValueError):
        Truncater(7, marker=False, where="dunno")