def test_interleave(self): """ L{OMetaBase.interleave} matched randomly mixed parts """ o = OMetaBase("ab") d = dict() v, e = o._interleave(d, '1', lambda: o.exactly('a'), None, '*', lambda: o.exactly('b'), 'x') self.assertEqual((v, e), (['a', ['b']], [1, None])) self.assertIn('x', d) self.assertEqual(d['x'], ['b'])
def test_listpattern(self): """ L{OMetaBase.rule_listpattern} matches contents of lists. """ o = OMetaBase([["a"]]) v, e = o.listpattern(lambda: o.exactly("a")) self.assertEqual((v, e), (["a"], [0, None]))
def test_consumed_by(self): """ L{OMetaBase.consumed_by} return the full matched string, not each matched parts """ o = OMetaBase("aax") v, e = o.consumed_by(lambda: o.many(lambda: o.exactly("a"))) self.assertEqual((v, e), ("aa", _MaybeParseError(2, [('expected', None, 'a')])))
def test_listpattern(self): """ L{OMetaBase.rule_listpattern} matches contents of lists. """ o = OMetaBase([["a"]]) v, e = o.listpattern(lambda: o.exactly("a")) self.assertEqual((v, e), (["a"], [0, None]))
def test_notError(self): """ When L{OMetaBase._not} fails, its error contains the current input position and no error info. """ data = "xy" o = OMetaBase(data) e = self.assertRaises(ParseError, o._not, lambda: o.exactly("x")) self.assertEqual(e[0], 1) self.assertEqual(e[1], None)
def test_notError(self): """ When L{OMetaBase._not} fails, its error contains the current input position and no error info. """ data = "xy" o = OMetaBase(data) e = self.assertRaises(ParseError, o._not, lambda: o.exactly("x")) self.assertEqual(e[0], 1) self.assertEqual(e[1], None)
def test_notError(self): """ When L{OMetaBase._not} fails, its error contains the current input position and no error info. """ data = "xy" o = OMetaBase(data) try: o._not(lambda: o.exactly("x")) except _MaybeParseError, e: self.assertEqual(e[0], 1) self.assertEqual(e[1], None)
def test_notError(self): """ When L{OMetaBase._not} fails, its error contains the current input position and no error info. """ data = "xy" o = OMetaBase(data) try: o._not(lambda: o.exactly("x")) except _MaybeParseError as e: self.assertEqual(e[0], 1) self.assertEqual(e[1], None) else: self.fail('_MaybeParseError not raised')