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

Source Code for Module lepl._test.base

 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  Support for matcher tests. 
32  ''' 
33   
34  #from logging import basicConfig, DEBUG 
35  from re import sub 
36  from unittest import TestCase 
37   
38  from lepl.support.lib import str 
39  from lepl.stream.maxdepth import FullFirstMatchException 
40   
41   
42 -class BaseTest(TestCase):
43
44 - def assert_direct(self, stream, match, target):
45 match.config.no_full_first_match() 46 parser = match.get_parse_all() 47 #print(parser.matcher.tree()) 48 result = list(parser(stream)) 49 assert target == result, result
50
51 - def assert_fail(self, stream, match):
52 try: 53 match.match_string(stream) 54 assert 'Expected error' 55 except FullFirstMatchException: 56 pass
57
58 - def assert_list(self, stream, match, target, **kargs):
59 match.config.no_full_first_match() 60 matcher = match.get_parse_list_all() 61 #print(matcher.matcher) 62 result = list(matcher(stream, **kargs)) 63 assert target == result, result
64
65 - def assert_literal(self, stream, matcher):
67 68
69 -def assert_str(a, b):
70 ''' 71 Assert two strings are approximately equal, allowing tests to run in 72 Python 3 and 2. 73 ''' 74 def clean(x): 75 x = str(x) 76 x = x.replace("u'", "'") 77 x = x.replace("lepl.matchers.error.Error", "Error") 78 x = x.replace("lepl.stream.maxdepth.FullFirstMatchException", "FullFirstMatchException") 79 x = sub('<(.+) 0x[0-9a-fA-F]*>', '<\\1 0x...>', x) 80 x = sub('(\\d+)L', '\\1', x) 81 return x
82 a = clean(a) 83 b = clean(b) 84 assert a == b, '"' + a + '" != "' + b + '"' 85