"Fossies" - the Fresh Open Source Software Archive 
Member "PhotoCollage-1.4.5/tests/test_collage.py" (9 Jul 2021, 7785 Bytes) of package /linux/privat/PhotoCollage-1.4.5.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the latest
Fossies "Diffs" side-by-side code changes report for "test_collage.py":
1.4.4_vs_1.4.5.
1 # Copyright (C) 2014 Adrien Vergé
2 #
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License along
14 # with this program; if not, write to the Free Software Foundation, Inc.,
15 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
17 import unittest
18 from unittest.mock import Mock, patch
19
20 from photocollage.collage import Page, Photo
21
22
23 class TestCollage(unittest.TestCase):
24 def setUp(self):
25 self.p1 = Mock()
26 self.p2 = Mock()
27
28 def force_cell_position(self, pos):
29 """Disable random in placing cells"""
30 self.p1.stop()
31 self.p1 = patch("random.choice",
32 new=Mock(side_effect=lambda x: x[pos]))
33 self.p1.start()
34
35 def prevent_cell_extension(self):
36 self.p2.stop()
37 self.p2 = patch("random.random", new=Mock(side_effect=lambda: 0.0))
38 self.p2.start()
39
40 def force_cell_extension(self):
41 self.p2.stop()
42 self.p2 = patch("random.random", new=Mock(side_effect=lambda: 1.0))
43 self.p2.start()
44
45 def test_next_free_col(self):
46 self.force_cell_position(0)
47 self.prevent_cell_extension()
48
49 page = Page(100, 0.6, 4)
50 page.add_cell(Photo("img", 10, 10))
51 page.add_cell(Photo("img", 10, 10))
52 wanted = "[25 25] [25 25] "
53 self.assertEqual(repr(page), wanted)
54
55 page = Page(40, 0.6, 4)
56 page.add_cell(Photo("img", 10, 20))
57 page.add_cell(Photo("img", 10, 15))
58 page.add_cell(Photo("img", 10, 10))
59 page.add_cell(Photo("img", 10, 10))
60 page.add_cell(Photo("img", 10, 10))
61 page.add_cell(Photo("img", 10, 10))
62 page.add_cell(Photo("img", 10, 22))
63 wanted = ("[10 20] [10 15] [10 10] [10 10]\n"
64 " [10 22] [10 10] [10 10]")
65 self.assertEqual(repr(page), wanted)
66
67 page = Page(50, 0.6, 5)
68 self.force_cell_extension()
69 page.add_cell(Photo("img", 10, 15))
70 page.add_cell(Photo("img", 10, 10))
71 self.prevent_cell_extension()
72 page.add_cell(Photo("img", 10, 10))
73 page.add_cell(Photo("img", 10, 50))
74 wanted = ("[20 30-- ------] [20 20-- ------] [10 10]\n"
75 " [10 50]")
76 self.assertEqual(repr(page), wanted)
77
78 def test_remove_empty_cols(self):
79 page = Page(1, 0.6, 100)
80 self.prevent_cell_extension()
81 page.add_cell(Photo("img", 10, 10))
82 page.add_cell(Photo("img", 10, 10))
83 page.add_cell(Photo("img", 10, 10))
84 page.add_cell(Photo("img", 10, 10))
85 page.add_cell(Photo("img", 10, 10))
86 page.remove_empty_cols()
87 self.assertEqual(len(page.cols), 5)
88
89 def test_bottom_hole_A1(self):
90 """
91 ----------------------
92 | | | |
93 | |-------------|
94 |------| |
95 | |--------------
96 | | |
97 ---------------
98 """
99 page = Page(30, 0.6, 3)
100 self.force_cell_position(0)
101 self.prevent_cell_extension()
102 page.add_cell(Photo("img", 10, 15))
103 page.add_cell(Photo("img", 10, 10))
104 page.add_cell(Photo("img", 10, 10))
105 self.force_cell_extension()
106 page.add_cell(Photo("img", 10, 5))
107 self.prevent_cell_extension()
108 page.add_cell(Photo("img", 10, 15))
109 page.add_cell(Photo("img", 10, 10))
110
111 wanted = ("[10 15] [10 10] [10 10]\n"
112 "[10 15] [20 10-- ------]\n"
113 " [10 10] ")
114 self.assertEqual(repr(page), wanted)
115
116 page.remove_bottom_holes()
117 wanted = ("[10 15] [10 10] [10 10]\n"
118 "[10 15] [20 10-- ------]\n"
119 " [20 10-- ------]")
120 self.assertEqual(repr(page), wanted)
121
122 def test_bottom_hole_A2(self):
123 """
124 ----------------------
125 | | | |
126 | |-------------|
127 |------| |
128 | |--------------
129 | | | |
130 -------- --------
131 """
132 page = Page(30, 0.6, 3)
133 self.force_cell_position(0)
134 self.prevent_cell_extension()
135 page.add_cell(Photo("img", 10, 15))
136 page.add_cell(Photo("img", 10, 10))
137 page.add_cell(Photo("img", 10, 10))
138 self.force_cell_extension()
139 page.add_cell(Photo("img", 10, 5))
140 self.prevent_cell_extension()
141 page.add_cell(Photo("img", 10, 15))
142 self.force_cell_position(1)
143 page.add_cell(Photo("img", 10, 10))
144
145 wanted = ("[10 15] [10 10] [10 10]\n"
146 "[10 15] [20 10-- ------]\n"
147 " [10 10]")
148 self.assertEqual(repr(page), wanted)
149
150 page.remove_bottom_holes()
151 wanted = ("[10 15] [10 10] [10 10]\n"
152 "[10 15] [20 10-- ------]\n"
153 " [20 10-- ------]")
154 self.assertEqual(repr(page), wanted)
155
156 def test_bottom_hole_B2(self):
157 """
158 ----------------------
159 | | | |
160 |-------------|------|
161 | | |
162 ---------------------|
163 | |
164 ---------------
165 """
166 page = Page(30, 0.6, 3)
167 self.force_cell_position(0)
168 self.prevent_cell_extension()
169 page.add_cell(Photo("img", 10, 10))
170 page.add_cell(Photo("img", 10, 10))
171 page.add_cell(Photo("img", 10, 10))
172 self.force_cell_extension()
173 page.add_cell(Photo("img", 10, 5))
174 self.prevent_cell_extension()
175 page.add_cell(Photo("img", 10, 10))
176 self.force_cell_position(2)
177 self.force_cell_extension()
178 page.add_cell(Photo("img", 10, 5))
179
180 wanted = ("[10 10] [10 10] [10 10]\n"
181 "[20 10-- ------] [10 10]\n"
182 " [20 10-- ------]")
183 self.assertEqual(repr(page), wanted)
184
185 page.remove_bottom_holes()
186 wanted = ("[10 10] [10 10] [10 10]\n"
187 "[20 10-- ------] [10 10]\n"
188 "[20 10-- ------] ")
189 self.assertEqual(repr(page), wanted)
190
191 def test_bottom_hole_B1(self):
192 """
193 ----------------------
194 | | | |
195 |------|-------------|
196 | | |
197 |---------------------
198 | |
199 ---------------
200 """
201 page = Page(30, 0.6, 3)
202 self.force_cell_position(0)
203 self.prevent_cell_extension()
204 page.add_cell(Photo("img", 10, 10))
205 page.add_cell(Photo("img", 10, 10))
206 page.add_cell(Photo("img", 10, 10))
207 page.add_cell(Photo("img", 10, 10))
208 self.force_cell_extension()
209 page.add_cell(Photo("img", 10, 5))
210 page.add_cell(Photo("img", 10, 5))
211
212 wanted = ("[10 10] [10 10] [10 10]\n"
213 "[10 10] [20 10-- ------]\n"
214 "[20 10-- ------] ")
215 self.assertEqual(repr(page), wanted)
216
217 page.remove_bottom_holes()
218 wanted = ("[10 10] [10 10] [10 10]\n"
219 "[10 10] [20 10-- ------]\n"
220 " [20 10-- ------]")
221 self.assertEqual(repr(page), wanted)
222
223
224 if __name__ == '__main__':
225 unittest.main()