Ejemplo n.º 1
0
 def test_b_createToken_given_8_expect_return_operand_token(self):
     expressionList = ["8"]
     # createToken(listIndex, expressionList, previousToken)
     tokenCreated = sY.createToken(0, expressionList, None)
     self.assertEqual(8, tokenCreated.num)
     self.assertEqual("int", tokenCreated.numType)
     self.assertEqual("OPERAND_TOKEN", tokenCreated.tokenType)
Ejemplo n.º 2
0
    def test_d_isStacksReadyForOperation_given_1_plus_in_stack_expect_no(self):
        expressionList = [
            "1", "+", "2"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []

        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        # isStacksReadyForOperation(operandStack, operatorStack, token)
        self.assertEqual(
            "NO",
            sY.isStacksReadyForOperation(operandStack, operatorStack, token2))
Ejemplo n.º 3
0
    def test_b_isNoOfTokensValidForOperation_given_1_operand_and_no_operator_expect_true(
            self):
        expressionList = [
            "-", "2"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []

        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        # isNoOfTokensValidForOperation(operandStack, operatorStack)
        self.assertEqual(
            False, sY.isNoOfTokensValidForOperation(operandStack,
                                                    operatorStack))
Ejemplo n.º 4
0
    def test_c_isStacksReadyForOperation_given_1_plus_minus_3_token_is_minus_expect_same_precedence_but_xready(
            self):
        expressionList = [
            "1", "+", "-", "3"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []

        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        token3 = sY.createToken(2, expressionList, token1)
        # isStacksReadyForOperation(operandStack, operatorStack, token)
        self.assertEqual(
            "SAME_PRECEDENCE_BUT_XREADY",
            sY.isStacksReadyForOperation(operandStack, operatorStack, token3))
Ejemplo n.º 5
0
    def test_b_calculateAnsAndPushToOperandStack_given_10_divide_2_expect_5_in_operand_stack(
            self):
        expressionList = [
            "10", "/", "2"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []
        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        token3 = sY.createToken(2, expressionList, token2)
        st.pushStack(operandStack, token3)

        # calculateAnsAndPushToOperandStack(operandStack, operatorStack)
        sY.calculateAnsAndPushToOperandStack(operandStack, operatorStack)
        self.assertEqual(10 / 2, operandStack[0].num)
Ejemplo n.º 6
0
 def test_a_pushTokenToStack_given_operand_1_expect_token_pushed(self):
     expressionList = ["1"]
     operandStack = []
     operatorStack = []
     # createToken(listIndex, expressionList, previousToken)
     tokenCreated = sY.createToken(0, expressionList, None)
     # pushTokenToStack(token, operandStack, operatorStack)
     sY.pushTokenToStack(tokenCreated, operandStack, operatorStack)
     self.assertEqual(1, operandStack[0].num)
     self.assertEqual("int", operandStack[0].numType)
     self.assertEqual("OPERAND_TOKEN", operandStack[0].tokenType)
Ejemplo n.º 7
0
    def test_a_createToken_given_operand_expect_return_operand_token(self):
        # createToken(listIndex, expressionList, previousToken)
        listIndex = 0
        expressionList = ["1"]
        previousToken = None

        tokenCreated = sY.createToken(listIndex, expressionList, previousToken)
        # Test for token i
        self.assertEqual(1, tokenCreated.num)  # First token so index is 0
        self.assertEqual("int", tokenCreated.numType)
        self.assertEqual("OPERAND_TOKEN", tokenCreated.tokenType)
        self.assertEqual(0, tokenCreated.tokenId)
Ejemplo n.º 8
0
    def test_a_isStacksReadyForOperation_given_1_multiply_2_token_is_minus_expect_yes(
            self):
        expressionList = [
            "1", "*", "2", "-", "3"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []

        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        token3 = sY.createToken(2, expressionList, token1)
        st.pushStack(operandStack, token3)
        token4 = sY.createToken(3, expressionList, token1)
        # isStacksReadyForOperation(operandStack, operatorStack, token)
        self.assertEqual(
            "YES",
            sY.isStacksReadyForOperation(operandStack, operatorStack, token4))
Ejemplo n.º 9
0
    def test_d_calculateAndReturnAnsToken_given_10p5_divide_5point1_expect_return_token_with_correct_num__and_correct_token_attributes(
            self):
        expressionList = [
            "10.5", "/", 5.1
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []
        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        token3 = sY.createToken(2, expressionList, token2)
        st.pushStack(operandStack, token3)

        # calculateAndReturnAnsToken(operandStack, operatorStack)
        ansToken = sY.calculateAndReturnAnsToken(operandStack, operatorStack)
        self.assertEqual(10.5 / 5.1, ansToken.num)
        self.assertEqual("float", ansToken.numType)
        self.assertEqual("OPERAND_TOKEN", ansToken.tokenType)
Ejemplo n.º 10
0
    def test_a_calculateAndReturnAnsToken_given_2_plus_100_expect_return_token_with_num_and_correct_token_attributes(
            self):
        expressionList = [
            "2", "+", "100"
        ]  # The function uses next character to determine affix type
        operandStack = []
        operatorStack = []
        # createToken(listIndex, expressionList, previousToken)
        token1 = sY.createToken(0, expressionList, None)
        # pushStack(stack, data)
        st.pushStack(operandStack, token1)
        token2 = sY.createToken(1, expressionList, token1)
        st.pushStack(operatorStack, token2)
        token3 = sY.createToken(2, expressionList, token2)
        st.pushStack(operandStack, token3)

        # calculateAndReturnAnsToken(operandStack, operatorStack)
        ansToken = sY.calculateAndReturnAnsToken(operandStack, operatorStack)
        self.assertEqual(2 + 100, ansToken.num)
        self.assertEqual("int", ansToken.numType)
        self.assertEqual("OPERAND_TOKEN", ansToken.tokenType)
Ejemplo n.º 11
0
 def test_a_createToken_given_prefix_plus_expect_return_operator_token(
         self):
     expressionList = [
         "+", "0"
     ]  # The function uses next character to determine affix type
     # createToken(listIndex, expressionList, previousToken)
     tokenCreated = sY.createToken(0, expressionList, None)
     self.assertEqual("+", tokenCreated.symbol)
     self.assertEqual(DictConstant.RIGHT_TO_LEFT,
                      tokenCreated.associativity)
     self.assertEqual(DictConstant.STRONG, tokenCreated.precedence)
     self.assertEqual("PREFIX", tokenCreated.affix)
Ejemplo n.º 12
0
 def test_b_pushTokenToStack_given_operand_open_bracket_expect_token_pushed(
         self):
     expressionList = [
         "(", "1"
     ]  # The function uses next character to determine affix type
     operandStack = []
     operatorStack = []
     # createToken(listIndex, expressionList, previousToken)
     tokenCreated = sY.createToken(0, expressionList, None)
     # pushTokenToStack(token, operandStack, operatorStack)
     sY.pushTokenToStack(tokenCreated, operandStack, operatorStack)
     self.assertEqual("(", operatorStack[0].symbol)
     self.assertEqual(DictConstant.LEFT_TO_RIGHT,
                      operatorStack[0].associativity)
     self.assertEqual(DictConstant.WEAK, operatorStack[0].precedence)
     self.assertEqual(None, operatorStack[0].affix)