def test_c_isOperatorInStackSamePrecedenceWithCurrentToken_given_prefix_plus_at_stack_and_prefix_minus_as_token_expect_True( self): operatorStack = [] # Initialise operator stack # Initialise operator token to insert to stack operatorToken = operatorT.OperatorToken() operatorToken.associativity = dictConstant.RIGHT_TO_LEFT operatorToken.precedence = dictConstant.STRONG operatorToken.symbol = '+' operatorToken.affix = "PREFIX" operatorToken.tokenType = "OPERATOR_TOKEN" # Initialise current token currentToken = operatorT.OperatorToken() currentToken.associativity = dictConstant.RIGHT_TO_LEFT currentToken.precedence = dictConstant.STRONG currentToken.symbol = '+' currentToken.affix = "PREFIX" currentToken.tokenType = "OPERATOR_TOKEN" # Push operator token into stack stack.pushStack(operatorStack, operatorToken) # isOperatorInStackHigherPrecedence(operatorStack, token) self.assertEqual( True, operatorT.isOperatorInStackSamePrecedenceWithCurrentToken( operatorStack, currentToken))
def test_e_isOperatorInStackSamePrecedenceWithCurrentToken_given_not_empty_stack_and_invalid_operator_token_expect_exception( self): # isOperatorInStackHigherPrecedence(operatorStack, token) operatorStack = [] # Initialise operator stack # Initialise operator token to insert to stack operatorToken = operatorT.OperatorToken() operatorToken.associativity = dictConstant.RIGHT_TO_LEFT operatorToken.precedence = dictConstant.STRONG operatorToken.symbol = '+' operatorToken.affix = "PREFIX" operatorToken.tokenType = "OPERATOR_TOKEN" # Initialise current token currentToken = operatorT.OperatorToken() currentToken.associativity = dictConstant.RIGHT_TO_LEFT currentToken.precedence = dictConstant.STRONG currentToken.symbol = '+' currentToken.affix = "PREFIX" currentToken.tokenType = "INVALID" # Push operator token into stack stack.pushStack(operatorStack, operatorToken) self.assertEqual( False, operatorT.isOperatorInStackSamePrecedenceWithCurrentToken( operatorStack, currentToken))
def test_d_isOperatorInStackHigherPrecedenceThanCurrentToken_given_empty_stack_and_valid_operator_token_expect_exception( self): try: # isOperatorInStackHigherPrecedence(operatorStack, token) operatorStack = [] # Initialise operator stack # Initialise current token currentToken = operatorT.OperatorToken() currentToken.associativity = dictConstant.RIGHT_TO_LEFT currentToken.precedence = dictConstant.STRONG currentToken.symbol = '+' currentToken.affix = "PREFIX" currentToken.tokenType = "OPERATOR_TOKEN" self.assertEqual( False, operatorT.isOperatorInStackHigherPrecedenceThanCurrentToken( operatorStack, currentToken)) except Exception as e: print(e)