Example #1
0
 def test_simplify(self):
     self.assertEqual(simplify_expression('if', '0 || (!defined(FOO) && 1)'),
         (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)'),
         (None, 'elif', '!defined(A) && defined(B)'))
     self.assertEqual(simplify_expression('elif', '!(0 && defined(A)) && (defined(B) || 1)'),
         (True, 'elif', '1'))
Example #2
0
 def test_basic(self):
     self.assertEqual(simplify_expression('if', '0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', 'SOMETHING'),
         (None, 'if', 'SOMETHING'))
Example #3
0
 def test_simplify(self):
     self.assertEqual(simplify_expression('if', '0 || (!defined(FOO) && 1)'),
         (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)'),
         (None, 'elif', '!defined(A) && defined(B)'))
     self.assertEqual(simplify_expression('elif', '!(0 && defined(A)) && (defined(B) || 1)'),
         (True, 'elif', '1'))
Example #4
0
 def test_basic(self):
     self.assertEqual(simplify_expression('if', '0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', 'SOMETHING'),
         (None, 'if', 'SOMETHING'))
Example #5
0
 def test_normalization(self):
     self.assertEqual(simplify_expression('ifdef', 'FOO'),
                      (None, 'ifdef', 'FOO'))
     self.assertEqual(simplify_expression('ifndef', 'FOO'),
                      (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('if', 'defined(FOO)'),
                      (None, 'ifdef', 'FOO'))
     self.assertEqual(simplify_expression('elif', 'defined(FOO)'),
                      (None, 'elif', 'defined(FOO)'))
Example #6
0
 def test_simplify_nested_parentheses(self):
     self.assertEqual(simplify_expression('if', '0 && (defined(FOO) || (defined(BAR) && !defined(BAZ)))'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '(defined(FOO) || (defined(BAR) && !defined(BAZ))) && 0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 || !(defined(FOO) || (defined(BAR) && !defined(BAZ)))'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '!(defined(FOO) || (defined(BAR) && !defined(BAZ))) || 1'),
         (True, 'if', '1'))
Example #7
0
 def test_normalization(self):
     self.assertEqual(simplify_expression('ifdef', 'FOO'),
         (None, 'ifdef', 'FOO'))
     self.assertEqual(simplify_expression('ifndef', 'FOO'),
         (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('if', 'defined(FOO)'),
         (None, 'ifdef', 'FOO'))
     self.assertEqual(simplify_expression('elif', 'defined(FOO)'),
         (None, 'elif', 'defined(FOO)'))
Example #8
0
 def test_simplify_nested_parentheses(self):
     self.assertEqual(simplify_expression('if', '0 && (defined(FOO) || (defined(BAR) && !defined(BAZ)))'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '(defined(FOO) || (defined(BAR) && !defined(BAZ))) && 0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 || !(defined(FOO) || (defined(BAR) && !defined(BAZ)))'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '!(defined(FOO) || (defined(BAR) && !defined(BAZ))) || 1'),
         (True, 'if', '1'))
Example #9
0
 def test_forced_defines(self):
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)', {'A': False}),
         (None, 'elif', 'defined(B)'))
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)', {'B': True}),
         (None, 'elif', '!defined(A)'))
     self.assertEqual(simplify_expression('elif', 'defined(CORRADE_NO_DEBUG) || defined(NDEBUG)', {'DOXYGEN_GENERATING_OUTPUT': False, 'CORRADE_NO_DEBUG': True}),
         (True, 'elif', '1'))
     # Crazy thing, combining all the awful corner cases from above
     self.assertEqual(simplify_expression('if', '!defined(CORRADE_NO_TWEAKABLE) && (defined(DOXYGEN_GENERATING_OUTPUT) || defined(CORRADE_TARGET_UNIX) || (defined(CORRADE_TARGET_WINDOWS) && !defined(CORRADE_TARGET_WINDOWS_RT)) || defined(CORRADE_TARGET_EMSCRIPTEN))', {'DOXYGEN_GENERATING_OUTPUT': False, 'CORRADE_NO_TWEAKABLE': True}),
         (False, 'if', '0'))
Example #10
0
 def test_forced_defines(self):
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)', {'A': False}),
         (None, 'elif', 'defined(B)'))
     self.assertEqual(simplify_expression('elif', '!(0 || defined(A)) && (defined(B) && 1)', {'B': True}),
         (None, 'elif', '!defined(A)'))
     self.assertEqual(simplify_expression('elif', 'defined(CORRADE_NO_DEBUG) || defined(NDEBUG)', {'DOXYGEN_GENERATING_OUTPUT': False, 'CORRADE_NO_DEBUG': True}),
         (True, 'elif', '1'))
     # Crazy thing, combining all the awful corner cases from above
     self.assertEqual(simplify_expression('if', '!defined(CORRADE_NO_TWEAKABLE) && (defined(DOXYGEN_GENERATING_OUTPUT) || defined(CORRADE_TARGET_UNIX) || (defined(CORRADE_TARGET_WINDOWS) && !defined(CORRADE_TARGET_WINDOWS_RT)) || defined(CORRADE_TARGET_EMSCRIPTEN))', {'DOXYGEN_GENERATING_OUTPUT': False, 'CORRADE_NO_TWEAKABLE': True}),
         (False, 'if', '0'))
Example #11
0
 def test_forced_defines(self):
     self.assertEqual(
         simplify_expression('elif',
                             '!(0 || defined(A)) && (defined(B) && 1)',
                             {'A': False}), (None, 'elif', 'defined(B)'))
     self.assertEqual(
         simplify_expression('elif',
                             '!(0 || defined(A)) && (defined(B) && 1)',
                             {'B': True}), (None, 'elif', '!defined(A)'))
     self.assertEqual(
         simplify_expression(
             'elif', 'defined(CORRADE_NO_DEBUG) || defined(NDEBUG)', {
                 'DOXYGEN_GENERATING_OUTPUT': False,
                 'CORRADE_NO_DEBUG': True
             }), (True, 'elif', '1'))
Example #12
0
 def test_basic_simplify(self):
     self.assertEqual(simplify_expression('if', '0 || 0'),
                      (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 && 0'),
                      (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 && 1'),
                      (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '0 || 1'),
                      (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '(1)'), (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '(!defined(FOO))'),
                      (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('elif', '!(!!0)'),
                      (True, 'elif', '1'))
Example #13
0
 def test_basic_simplify(self):
     self.assertEqual(simplify_expression('if', '0 || 0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 && 0'),
         (False, 'if', '0'))
     self.assertEqual(simplify_expression('if', '1 && 1'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '0 || 1'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '(1)'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '(!defined(FOO))'),
         (None, 'ifndef', 'FOO'))
     self.assertEqual(simplify_expression('elif', '!(!!0)'),
         (True, 'elif', '1'))
Example #14
0
 def test_negation_precedence(self):
     self.assertEqual(simplify_expression('if', '!0 || defined(FOO)'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '!0 && defined(FOO)'),
         (None, 'ifdef', 'FOO'))
Example #15
0
 def test_negation_precedence(self):
     self.assertEqual(simplify_expression('if', '!0 || defined(FOO)'),
         (True, 'if', '1'))
     self.assertEqual(simplify_expression('if', '!0 && defined(FOO)'),
         (None, 'ifdef', 'FOO'))