def testConditionalExpression_51(self): """ConstantExpression - Conditional expression evaluation: raises on ((&&)==(||)) ? (1) : (2)\\n""" myCpp = PpTokeniser.PpTokeniser() expression = '((&&)==(||)) ? (1) : (2)\n' myCe = ConstantExpression.ConstantExpression([]) m = myCe.RE_CONDITIONAL_EXPRESSION.match(expression) self.assertNotEqual(None, m) myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs(expression)] # print() # print(myToksTypes) myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertRaises(ConstantExpression.ExceptionConditionalExpression, myObj.evaluate)
def testEval_Fail_00(self): """ConstantExpression - evaluation raises for '"x" < ==' as eval fails.""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs('"x" < ==')] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertRaises(ConstantExpression.ExceptionEvaluateExpression, myObj.evaluate)
def test_00(self): """TestConstantExpressionLinux.test_00(): 1000000UL * 1000""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [ t for t in myCpp.genLexPptokenAndSeqWs('1000000UL * 1000\n') ] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(1000000000, myObj.evaluate())
def testConditionalExpression_01(self): """ConstantExpression - Conditional expression evaluation: ((1)>(2)) ? (1) : (2)\\n""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [ t for t in myCpp.genLexPptokenAndSeqWs('((1)>(2)) ? (1) : (2)\n') ] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(2, myObj.evaluate())
def testConditionalExpressionRegex(self): """ConstantExpression - Conditional expression regular expression.""" myObj = ConstantExpression.ConstantExpression([]) m = myObj.RE_CONDITIONAL_EXPRESSION.match('(a) > (b) ? (a) : (b)') self.assertNotEqual(None, m) self.assertEqual(3, len(m.groups())) self.assertEqual('(a) > (b) ', m.group(1)) self.assertEqual(' (a) ', m.group(2)) self.assertEqual(' (b)', m.group(3))
def testEval_Word_06(self): """ConstantExpression - evaluation of "(1 && 1) && ((0 > 0 ) || 1) && (true || false)".""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [ t for t in myCpp.genLexPptokenAndSeqWs( '(1 && 1) && ((0 > 0 ) || 1) && (true || false)') ] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(1, myObj.evaluate())
def testEval_02(self): """ISO/IEC 9899:1999 (E) 6.10.1-3 - evaluation of "A == 0" is true when A not defined.""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs('A == 0')] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(1, myObj.evaluate())
def testEval_00(self): """ConstantExpression - evaluation of "1 < 2".""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs('1 < 2')] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(1, myObj.evaluate())
def testCtor_01(self): """ConstantExpression - construction with "1 < 2".""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs('1 < 2')] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual("1 < 2", str(myObj))
def testCtor_00(self): """ConstantExpression - simple construction.""" ConstantExpression.ConstantExpression([])
def testTerneryRegexNoMatch(self): """ConstantExpression - Conditional expression regular expression - no match.""" myObj = ConstantExpression.ConstantExpression([]) m = myObj.RE_CONDITIONAL_EXPRESSION.match('(a) > (b) ? (a) (b)') self.assertEqual(None, m)
def testEval_Word_05(self): """ConstantExpression - evaluation of "false".""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs('false')] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(0, myObj.evaluate())
def testEval_11(self): """Evaluation of long character-literal comparison "L'A' == L'B'" is False.""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs("L'A' == L'B'")] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(0, myObj.evaluate())
def testEval_04(self): """Evaluation of character-literal comparison "'A' == 'A'" is True.""" myCpp = PpTokeniser.PpTokeniser() myToksTypes = [t for t in myCpp.genLexPptokenAndSeqWs("'A' == 'A'")] myObj = ConstantExpression.ConstantExpression(myToksTypes) self.assertEqual(1, myObj.evaluate())