Package lepl :: Package support :: Package _test :: Module lib
[hide private]
[frames] | no frames]

Source Code for Module lepl.support._test.lib

 1   
 2  # The contents of this file are subject to the Mozilla Public License 
 3  # (MPL) Version 1.1 (the "License"); you may not use this file except 
 4  # in compliance with the License. You may obtain a copy of the License 
 5  # at http://www.mozilla.org/MPL/ 
 6  # 
 7  # Software distributed under the License is distributed on an "AS IS" 
 8  # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 
 9  # the License for the specific language governing rights and 
10  # limitations under the License. 
11  # 
12  # The Original Code is LEPL (http://www.acooke.org/lepl) 
13  # The Initial Developer of the Original Code is Andrew Cooke. 
14  # Portions created by the Initial Developer are Copyright (C) 2009-2010 
15  # Andrew Cooke (andrew@acooke.org). All Rights Reserved. 
16  # 
17  # Alternatively, the contents of this file may be used under the terms 
18  # of the LGPL license (the GNU Lesser General Public License, 
19  # http://www.gnu.org/licenses/lgpl.html), in which case the provisions 
20  # of the LGPL License are applicable instead of those above. 
21  # 
22  # If you wish to allow use of your version of this file only under the 
23  # terms of the LGPL License and not to allow others to use your version 
24  # of this file under the MPL, indicate your decision by deleting the 
25  # provisions above and replace them with the notice and other provisions 
26  # required by the LGPL License.  If you do not delete the provisions 
27  # above, a recipient may use your version of this file under either the 
28  # MPL or the LGPL License. 
29   
30  ''' 
31  Tests for the lepl.support.lib module. 
32  ''' 
33   
34  from unittest import TestCase 
35   
36  from lepl.support.lib import assert_type, CircularFifo 
37   
38   
39  # pylint: disable-msg=C0103, C0111, C0301, W0702, C0324, R0201, R0913 
40  # (dude this is just a test) 
41   
42       
43 -class AssertTypeTestCase(TestCase):
44
45 - def test_ok(self):
46 assert_type('', 1, int) 47 assert_type('', '', str) 48 assert_type('', None, int, none_ok=True)
49
50 - def test_bad(self):
51 self.assert_bad('The foo attribute in Bar', '', int, False, 52 "The foo attribute in Bar (value '') must be of type int.") 53 self.assert_bad('The foo attribute in Bar', None, int, False, 54 "The foo attribute in Bar (value None) must be of type int.")
55
56 - def assert_bad(self, name, value, type_, none_ok, msg):
57 try: 58 assert_type(name, value, type_, none_ok=none_ok) 59 assert False, 'Expected failure' 60 except TypeError as e: 61 assert e.args[0] == msg, e.args[0]
62 63
64 -class CircularFifoTest(TestCase):
65
66 - def test_expiry(self):
67 fifo = CircularFifo(3) 68 assert None == fifo.append(1) 69 assert None == fifo.append(2) 70 assert None == fifo.append(3) 71 for i in range(4,10): 72 assert i-3 == fifo.append(i)
73
74 - def test_pop(self):
75 fifo = CircularFifo(3) 76 for i in range(1,3): 77 for j in range(i): 78 assert None == fifo.append(j) 79 for j in range(i): 80 popped = fifo.pop() 81 assert j == popped, '{0} {1} {2}'.format(i, j, popped) 82 for i in range(4): 83 fifo.append(i) 84 assert 1 == fifo.pop()
85
86 - def test_list(self):
87 fifo = CircularFifo(3) 88 for i in range(7): 89 fifo.append(i) 90 assert [4,5,6] == list(fifo) 91 fifo.append(7) 92 assert [5,6,7] == list(fifo) 93 fifo.append(8) 94 assert [6,7,8] == list(fifo) 95 fifo.append(9) 96 assert [7,8,9] == list(fifo)
97