예제 #1
0
 def test_escape(self):
     t1, t2 = self._tokenize(r'\[\n')
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('[')))
     self.assertEqual(
         (t2.type, t2.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('\n')))
예제 #2
0
파일: test_regex.py 프로젝트: fraca7/ptk
 def test_deadend(self):
     rx = RegularExpression.concat(
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('<')[0])),
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('=')[0])))
     rx.start()
     rx.feed(self.t('<')[0])  # byte/char
     self.assertFalse(rx.isDeadEnd())
예제 #3
0
 def test_middle(self):
     t1, t2, t3 = self._tokenize(
         r's{symbol}e'.format(symbol=self.symbol[1]))
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('s')))
     self.assertEqual((t2.type, t2.value), self.symbol)
     self.assertEqual(
         (t3.type, t3.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('e')))
예제 #4
0
파일: test_regex.py 프로젝트: fraca7/ptk
 def test_concat(self):
     rx = RegularExpression.concat(
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('a')[0])),
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('b')[0])),
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('c')[0])))
     self.assertTrue(rx.match(self.t('abc')))
     self.assertFalse(rx.match(self.t('ab')))
예제 #5
0
 def test_concat(self):
     t1, t2, t3 = self._tokenize('abc')
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('a')))
     self.assertEqual(
         (t2.type, t2.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('b')))
     self.assertEqual(
         (t3.type, t3.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('c')))
예제 #6
0
 def test_closure(self):
     t1, t2 = self._tokenize('a+')
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('a')))
     self.assertEqual((t2.type, t2.value),
                      (RegexTokenizer.TOK_EXPONENT, ExponentToken(1, None)))
예제 #7
0
 def test_interval(self):
     t1, t2 = self._tokenize('a{13-15}')
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('a')))
     self.assertEqual((t2.type, t2.value),
                      (RegexTokenizer.TOK_EXPONENT, ExponentToken(13, 15)))
예제 #8
0
 def test_single_value(self):
     t1, t2 = self._tokenize('a{42}')
     self.assertEqual(
         (t1.type, t1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('a')))
     self.assertEqual((t2.type, t2.value),
                      (RegexTokenizer.TOK_EXPONENT, ExponentToken(42, 42)))
예제 #9
0
 def test_any(self):
     tok1, tok2 = self._tokenize('a.')
     self.assertEqual(
         (tok1.type, tok1.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('a')))
     self.assertEqual((tok2.type, tok2.value),
                      (RegexTokenizer.TOK_CLASS, AnyCharacterClass()))
예제 #10
0
파일: test_regex.py 프로젝트: fraca7/ptk
 def test_exponent_null(self):
     rx = RegularExpression.exponent(
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('a')[0])), 0, 1)
     self.assertTrue(rx.match(self.t('')))
     self.assertTrue(rx.match(self.t('a')))
     self.assertFalse(rx.match(self.t('aa')))
예제 #11
0
파일: test_regex.py 프로젝트: fraca7/ptk
 def test_kleene(self):
     rx = RegularExpression.kleene(
         RegularExpression.fromClass(LitteralCharacterClass(
             self.t('a')[0])))
     self.assertTrue(rx.match(self.t('')))
     self.assertTrue(rx.match(self.t('a')))
     self.assertTrue(rx.match(self.t('aa')))
     self.assertFalse(rx.match(self.t('ab')))
예제 #12
0
 def test_start(self):
     t1, t2 = self._tokenize(r'{symbol}s'.format(symbol=self.symbol[1]))
     self.assertEqual((t1.type, t1.value), self.symbol)
     self.assertEqual(
         (t2.type, t2.value),
         (RegexTokenizer.TOK_CLASS, LitteralCharacterClass('s')))
예제 #13
0
파일: test_regex.py 프로젝트: fraca7/ptk
 def test_newline(self):
     rx = RegularExpression.fromClass(
         LitteralCharacterClass(self.t('\n')[0]))
     self.assertTrue(rx.match(self.t('\n')))