Beispiel #1
0
class StackTest(unittest.TestCase):
    def setUp(self) -> None:
        self.__stack = Stack()
        self.__stack.push(1)
        self.__stack.push(2)
        self.__stack.push(3)
        self.__stack.push(4)
        self.__stack.push(5)

    def testPop(self) -> None:
        self.assertIn(5, self.__stack.pop())
        self.assertEqual(4, len(self.__stack))

    def testPush(self) -> None:
        self.__stack.push(6)
        self.assertIn(6, self.__stack.pop())
        self.assertEqual(5, len(self.__stack))

    def testFindKey(self) -> None:
        self.assertTrue(self.__stack.findKey(1))
        self.assertFalse(self.__stack.findKey(999999))

    def testPushEmptyKey(self) -> None:
        with self.assertRaises(Exception):
            self.__stack.push(None)

    def testPopAll(self) -> None:
        for _ in range(6):
            item = self.__stack.pop()
        self.assertTrue(not item)
Beispiel #2
0
 #	print '***',stk.prt()
 #	line=line[:-1]
 line = line[:-1] + '$'
 #	line+='$'
 print '++', line
 index = 0
 a = line[index]
 while not stk.is_empty():
     print '--', stk.prt()
     #		print '||',a
     X = stk.top()
     if X.isupper():
         #			print 'run 1','|',X,'|',a,'|',mx.get(X,a)
         if mx.get(X, a) != -1 and mx.get(X, a) != None:
             print mx.get(X, a)
             stk.pop()
             stk.push(mx.get(X, a)[0])
         else:
             print 'reject 1'
             trig = 1
             break
     else:
         #			print 'run 2','|',X,'|',a
         if X == a:
             stk.pop()
             if X != '$':
                 #			stk.pop()
                 index += 1
                 a = line[index]
         elif X == 'epsilon':
             stk.pop()
Beispiel #3
0
	stk.push('S $')
	print '***',stk.prt()
	line=line[:-1]
	line+='$'
	print '++',line
	index=0
	a=line[index]
	while not stk.is_empty():
		print '--',stk.prt()
		#		print '||',a
		X=stk.top()
		if X.isupper():
			print 'run 1','|',X,'|',a,'|',mx.get(X,a)
			if mx.get(X,a)!=-1 and mx.get(X,a)!=None:
				print mx.get(X,a)
				stk.pop()
				stk.push(mx.get(X,a)[0])
			else:
				print 'reject 1'
				trig=1
				break
		else:
			print 'run 2','|',X,'|',a
			if X==a:
				stk.pop()
				if X!='$':
#					stk.pop()
					index=index+1
					a=line[index]
			elif X=='epsilon':
				stk.pop()