Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mikf
GitHub Repository: mikf/gallery-dl
Path: blob/master/test/test_output.py
5457 views
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
4
# Copyright 2021 Mike Fährmann
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License version 2 as
8
# published by the Free Software Foundation.
9
10
import os
11
import sys
12
import unittest
13
14
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
15
from gallery_dl import output # noqa E402
16
17
18
class TestShorten(unittest.TestCase):
19
20
def test_shorten_noop(self, f=output.shorten_string):
21
self.assertEqual(f("" , 10), "")
22
self.assertEqual(f("foobar", 10), "foobar")
23
24
def test_shorten(self, f=output.shorten_string):
25
s = "01234567890123456789" # string of length 20
26
self.assertEqual(f(s, 30), s)
27
self.assertEqual(f(s, 25), s)
28
self.assertEqual(f(s, 20), s)
29
self.assertEqual(f(s, 19), "012345678…123456789")
30
self.assertEqual(f(s, 18), "01234567…123456789")
31
self.assertEqual(f(s, 17), "01234567…23456789")
32
self.assertEqual(f(s, 16), "0123456…23456789")
33
self.assertEqual(f(s, 15), "0123456…3456789")
34
self.assertEqual(f(s, 14), "012345…3456789")
35
self.assertEqual(f(s, 13), "012345…456789")
36
self.assertEqual(f(s, 12), "01234…456789")
37
self.assertEqual(f(s, 11), "01234…56789")
38
self.assertEqual(f(s, 10), "0123…56789")
39
self.assertEqual(f(s, 9) , "0123…6789")
40
self.assertEqual(f(s, 3) , "0…9")
41
self.assertEqual(f(s, 2) , "…9")
42
43
def test_shorten_separator(self, f=output.shorten_string):
44
s = "01234567890123456789" # string of length 20
45
self.assertEqual(f(s, 20, "|---|"), s)
46
self.assertEqual(f(s, 19, "|---|"), "0123456|---|3456789")
47
self.assertEqual(f(s, 15, "|---|"), "01234|---|56789")
48
self.assertEqual(f(s, 10, "|---|"), "01|---|789")
49
50
self.assertEqual(f(s, 19, "..."), "01234567...23456789")
51
self.assertEqual(f(s, 19, "..") , "01234567..123456789")
52
self.assertEqual(f(s, 19, ".") , "012345678.123456789")
53
self.assertEqual(f(s, 19, "") , "0123456780123456789")
54
55
56
class TestShortenEAW(unittest.TestCase):
57
58
def test_shorten_eaw_noop(self, f=output.shorten_string_eaw):
59
self.assertEqual(f("" , 10), "")
60
self.assertEqual(f("foobar", 10), "foobar")
61
62
def test_shorten_eaw(self, f=output.shorten_string_eaw):
63
s = "01234567890123456789" # 20 ascii characters
64
self.assertEqual(f(s, 30), s)
65
self.assertEqual(f(s, 25), s)
66
self.assertEqual(f(s, 20), s)
67
self.assertEqual(f(s, 19), "012345678…123456789")
68
self.assertEqual(f(s, 18), "01234567…123456789")
69
self.assertEqual(f(s, 17), "01234567…23456789")
70
self.assertEqual(f(s, 16), "0123456…23456789")
71
self.assertEqual(f(s, 15), "0123456…3456789")
72
self.assertEqual(f(s, 14), "012345…3456789")
73
self.assertEqual(f(s, 13), "012345…456789")
74
self.assertEqual(f(s, 12), "01234…456789")
75
self.assertEqual(f(s, 11), "01234…56789")
76
self.assertEqual(f(s, 10), "0123…56789")
77
self.assertEqual(f(s, 9) , "0123…6789")
78
self.assertEqual(f(s, 3) , "0…9")
79
self.assertEqual(f(s, 2) , "…9")
80
81
def test_shorten_eaw_wide(self, f=output.shorten_string_eaw):
82
s = "幻想郷幻想郷幻想郷幻想郷" # 12 wide characters
83
self.assertEqual(f(s, 30), s)
84
self.assertEqual(f(s, 25), s)
85
self.assertEqual(f(s, 20), "幻想郷幻…想郷幻想郷")
86
self.assertEqual(f(s, 19), "幻想郷幻…想郷幻想郷")
87
self.assertEqual(f(s, 18), "幻想郷幻…郷幻想郷")
88
self.assertEqual(f(s, 17), "幻想郷幻…郷幻想郷")
89
self.assertEqual(f(s, 16), "幻想郷…郷幻想郷")
90
self.assertEqual(f(s, 15), "幻想郷…郷幻想郷")
91
self.assertEqual(f(s, 14), "幻想郷…幻想郷")
92
self.assertEqual(f(s, 13), "幻想郷…幻想郷")
93
self.assertEqual(f(s, 12), "幻想…幻想郷")
94
self.assertEqual(f(s, 11), "幻想…幻想郷")
95
self.assertEqual(f(s, 10), "幻想…想郷")
96
self.assertEqual(f(s, 9) , "幻想…想郷")
97
self.assertEqual(f(s, 3) , "…郷")
98
99
def test_shorten_eaw_mix(self, f=output.shorten_string_eaw):
100
s = "幻-想-郷##幻-想-郷##幻-想-郷" # mixed characters
101
self.assertEqual(f(s, 28), s)
102
self.assertEqual(f(s, 25), "幻-想-郷##幻…郷##幻-想-郷")
103
104
self.assertEqual(f(s, 20), "幻-想-郷#…##幻-想-郷")
105
self.assertEqual(f(s, 19), "幻-想-郷#…#幻-想-郷")
106
self.assertEqual(f(s, 18), "幻-想-郷…#幻-想-郷")
107
self.assertEqual(f(s, 17), "幻-想-郷…幻-想-郷")
108
self.assertEqual(f(s, 16), "幻-想-…#幻-想-郷")
109
self.assertEqual(f(s, 15), "幻-想-…幻-想-郷")
110
self.assertEqual(f(s, 14), "幻-想-…-想-郷")
111
self.assertEqual(f(s, 13), "幻-想-…-想-郷")
112
self.assertEqual(f(s, 12), "幻-想…-想-郷")
113
self.assertEqual(f(s, 11), "幻-想…想-郷")
114
self.assertEqual(f(s, 10), "幻-…-想-郷")
115
self.assertEqual(f(s, 9) , "幻-…想-郷")
116
self.assertEqual(f(s, 3) , "…郷")
117
118
def test_shorten_eaw_separator(self, f=output.shorten_string_eaw):
119
s = "01234567890123456789" # 20 ascii characters
120
self.assertEqual(f(s, 20, "|---|"), s)
121
self.assertEqual(f(s, 19, "|---|"), "0123456|---|3456789")
122
self.assertEqual(f(s, 15, "|---|"), "01234|---|56789")
123
self.assertEqual(f(s, 10, "|---|"), "01|---|789")
124
125
self.assertEqual(f(s, 19, "..."), "01234567...23456789")
126
self.assertEqual(f(s, 19, "..") , "01234567..123456789")
127
self.assertEqual(f(s, 19, ".") , "012345678.123456789")
128
self.assertEqual(f(s, 19, "") , "0123456780123456789")
129
130
def test_shorten_eaw_separator_wide(self, f=output.shorten_string_eaw):
131
s = "幻想郷幻想郷幻想郷幻想郷" # 12 wide characters
132
self.assertEqual(f(s, 24, "|---|"), s)
133
self.assertEqual(f(s, 19, "|---|"), "幻想郷|---|郷幻想郷")
134
self.assertEqual(f(s, 15, "|---|"), "幻想|---|幻想郷")
135
self.assertEqual(f(s, 10, "|---|"), "幻|---|郷")
136
137
self.assertEqual(f(s, 19, "..."), "幻想郷幻...郷幻想郷")
138
self.assertEqual(f(s, 19, "..") , "幻想郷幻..郷幻想郷")
139
self.assertEqual(f(s, 19, ".") , "幻想郷幻.想郷幻想郷")
140
self.assertEqual(f(s, 19, "") , "幻想郷幻想郷幻想郷")
141
142
def test_shorten_eaw_separator_mix_(self, f=output.shorten_string_eaw):
143
s = "幻-想-郷##幻-想-郷##幻-想-郷" # mixed characters
144
self.assertEqual(f(s, 30, "|---|"), s)
145
self.assertEqual(f(s, 19, "|---|"), "幻-想-|---|幻-想-郷")
146
self.assertEqual(f(s, 15, "|---|"), "幻-想|---|想-郷")
147
self.assertEqual(f(s, 10, "|---|"), "幻|---|-郷")
148
149
self.assertEqual(f(s, 19, "..."), "幻-想-郷...幻-想-郷")
150
self.assertEqual(f(s, 19, "..") , "幻-想-郷..#幻-想-郷")
151
self.assertEqual(f(s, 19, ".") , "幻-想-郷#.#幻-想-郷")
152
self.assertEqual(f(s, 19, "") , "幻-想-郷###幻-想-郷")
153
154
155
if __name__ == "__main__":
156
unittest.main()
157
158