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

Source Code for Module lepl.matchers._test.error

  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.matchers.error module. 
 32  ''' 
 33   
 34  #from logging import basicConfig, DEBUG 
 35  from unittest import TestCase 
 36   
 37  from lepl import Literal, Error 
 38  from lepl.matchers.error import make_error 
 39  from lepl.matchers.variables import TraceVariables 
 40   
 41   
 42  # pylint: disable-msg=C0103, C0111, C0301, W0702, C0324, C0102, C0321, W0141, R0201 
 43  # (dude this is just a test) 
 44   
 45       
46 -class MessageTest(TestCase):
47 ''' 48 Check generation of Error nodes. 49 ''' 50
51 - def test_simple(self):
52 ''' 53 Test a message with no fmtting. 54 ''' 55 parser = (Literal('abc') > 'name') ** make_error('msg') 56 parser.config.no_full_first_match() 57 node = parser.parse('abc')[0] 58 assert isinstance(node, Error) 59 assert node[0] == 'msg', node[0] 60 assert str(node).startswith('msg ('), str(node) 61 assert isinstance(node, Exception), type(node)
62
63 - def test_fmtted(self):
64 ''' 65 Test a message with fmtting. 66 ''' 67 parser = (Literal('abc') > 'name') ** make_error('msg {in_rest}') 68 parser.config.no_full_first_match() 69 node = parser.parse('abc')[0] 70 assert isinstance(node, Error) 71 assert node[0] == "msg 'abc'", node[0] 72 assert str(node).startswith("msg 'abc' ("), str(node) 73 assert isinstance(node, Exception), type(node)
74
75 - def test_bad_fmt(self):
76 ''' 77 Test a message with bad fmtting. 78 ''' 79 try: 80 parser = (Literal('abc') > 'name') ** make_error('msg {0}') 81 parser.config.no_full_first_match() 82 list(parser.match('abc')) 83 assert False, 'expected error' 84 except IndexError: 85 pass
86
87 - def test_list(self):
88 ''' 89 Code has an exception for handling lists. 90 ''' 91 #basicConfig(level=DEBUG) 92 with TraceVariables(): 93 parser = (Literal([1, 2, 3]) > 'name') ** make_error('msg {in_str}') 94 parser.config.no_full_first_match() 95 node = parser.parse([1, 2, 3])[0] 96 assert isinstance(node, Error) 97 assert node[0] == 'msg 1', node[0] 98 assert str(node).startswith('msg 1 ('), str(node) 99 assert isinstance(node, Exception), type(node)
100