"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()