diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-03-15 21:39:23 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-03-17 17:56:17 -0700 |
commit | c4fc4453aacc8c1933e9cd256c04890978095003 (patch) | |
tree | 18b9f7065863fa8bd32abad2ae2454471b2058f6 /tests | |
parent | 6c31546ced32fd968ae50da7803964c9195ebd62 (diff) |
simplify nested ifs with identical elses
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_other.py | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/tests/test_other.py b/tests/test_other.py index 263bc376..4a62384c 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -2578,23 +2578,44 @@ int main() assert 'incorrect target triple' in err, err def test_simplify_ifs(self): - open('src.c', 'w').write(r''' + def test(src, nums): + open('src.c', 'w').write(src) + for opts, ifs in [ + [['-g2'], nums[0]], + [['-profiling'], nums[1]], + [['-profiling', '-g2'], nums[2]] + ]: + print opts, ifs + Popen([PYTHON, EMCC, 'src.c', '-O2'] + opts, stdout=PIPE, stderr=PIPE).communicate() + src = open('a.out.js').read() + main = src[src.find('function _main'):src.find('\n}', src.find('function _main'))] + actual_ifs = main.count('if (') + assert ifs == actual_ifs, main + ' : ' + str([ifs, actual_ifs]) + + test(r''' #include <stdio.h> #include <string.h> int main(int argc, char **argv) { if (argc > 5 && strlen(argv[0]) > 1 && strlen(argv[1]) > 2) printf("halp"); return 0; } - ''') - for opts, ifs in [ - [['-g2'], 3], - [['-profiling'], 1], - [['-profiling', '-g2'], 1] - ]: - print opts, ifs - Popen([PYTHON, EMCC, 'src.c', '-O2'] + opts, stdout=PIPE, stderr=PIPE).communicate() - src = open('a.out.js').read() - main = src[src.find('function _main'):src.find('\n}', src.find('function _main'))] - actual_ifs = main.count('if (') - assert ifs == actual_ifs, main + ''', [3, 1, 1]) + + test(r''' + #include <stdio.h> + #include <string.h> + int main(int argc, char **argv) { + while (argc % 3 == 0) { + if (argc > 5 && strlen(argv[0]) > 1 && strlen(argv[1]) > 2) { + printf("halp"); + argc++; + } else { + while (argc > 0) { + printf("%d\n", argc--); + } + } + } + return 0; + } + ''', [8, 6, 6]) |