예제 #1
0
 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'])
예제 #2
0
 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]))
예제 #3
0
 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')])))
예제 #4
0
 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]))
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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')