[pypy-svn] r13189 - pypy/branch/pycompiler/module/recparser/test

adim at codespeak.net adim at codespeak.net
Wed Jun 8 18:45:46 CEST 2005


Author: adim
Date: Wed Jun  8 18:45:27 2005
New Revision: 13189

Modified:
   pypy/branch/pycompiler/module/recparser/test/test_lookahead.py
Log:
added testcases for lookahead

Modified: pypy/branch/pycompiler/module/recparser/test/test_lookahead.py
==============================================================================
--- pypy/branch/pycompiler/module/recparser/test/test_lookahead.py	(original)
+++ pypy/branch/pycompiler/module/recparser/test/test_lookahead.py	Wed Jun  8 18:45:27 2005
@@ -15,13 +15,13 @@
 
 
     def test_basic_alternative(self):
-        alt = Alternative('alt', *self.tokens)
+        alt = Alternative('alt', self.tokens)
         build_first_sets([alt])
         assert alt.first_set == self.tokens
 
 
     def test_basic_sequence(self):
-        seq = Sequence('seq', *self.tokens)
+        seq = Sequence('seq', self.tokens)
         build_first_sets([seq])
         assert seq.first_set == [self.tokens[0]]
 
@@ -35,18 +35,33 @@
         assert kstar.first_set == [tok1, EmptyToken]
 
 
-def test_token_comparison():
-    assert Token('t1', 'foo') == Token('t1', 'foo')
-    assert ('t1', 'foo') == Token('t1', 'foo')
+    def test_maybe_empty_sequence(self):
+        """S -> tok1{0,2} tok2{0,2}
+         ==> S.first_set = [tok1, tok2, EmptyToken]
+        """
+        tok1, tok2, tok3 = self.tokens
+        k1 = KleenStar('k1', 0, 2, tok1)
+        k2 = KleenStar('k1', 0, 2, tok2)
+        seq = Sequence('seq', [k1, k2])
+        build_first_sets([k1, k2, seq])
+        assert seq.first_set == [tok1, tok2, EmptyToken]
 
-    # assert Token('t1', 'foo') == Token('t1', None)
-    assert ('t1', 'foo') == Token('t1', None)
 
-    assert Token('t1', 'foo') != Token('t2', 'foo')
-    assert ('t1', 'foo') != Token('t2', 'foo')
+    def test_not_empty_sequence(self):
+        """S -> tok1{0,2} tok2{1,2}
+         ==> S.first_set = [tok1, tok2]
+        """
+        tok1, tok2, tok3 = self.tokens
+        k1 = KleenStar('k1', 0, 2, tok1)
+        k2 = KleenStar('k1', 1, 2, tok2)
+        seq = Sequence('seq', [k1, k2])
+        build_first_sets([k1, k2, seq])
+        assert seq.first_set == [tok1, tok2]
 
+def test_token_comparison():
+    assert Token('t1', 'foo') == Token('t1', 'foo')
+    assert Token('t1', 'foo') != Token('t2', 'foo')
     assert Token('t2', 'foo') != Token('t1', None)
-    assert ('t2', 'foo') != Token('t1', None)
 
 
 class TestLookAhead:
@@ -54,17 +69,16 @@
      def setup_method(self, method):
          self.LOW = Token('LOW', 'low')
          self.CAP = Token('CAP' ,'cap')
-         self.A = Alternative('A')
+         self.A = Alternative('A', [])
          k1 = KleenStar('k1', 0, rule=self.LOW)
          k2 = KleenStar('k2', 0, rule=self.CAP)
-         self.B = Sequence('B', k1, self.A)
-         self.C = Sequence('C', k2, self.A)
+         self.B = Sequence('B', [k1, self.A])
+         self.C = Sequence('C', [k2, self.A])
          self.A.args = [self.B, self.C]
          build_first_sets([self.A, self.B, self.C, self.LOW, self.CAP, k1, k2])
          
      def test_S_first_set(self):
-         for s in  [('LOW', 'low'), EmptyToken, ('CAP', 'cap')]:
+         for s in  [Token('LOW', 'low'), EmptyToken, Token('CAP', 'cap')]:
              assert s in self.A.first_set
              assert s in self.B.first_set
              assert s in self.C.first_set
-



More information about the Pypy-commit mailing list