aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-03-15 21:39:23 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-03-17 17:56:17 -0700
commitc4fc4453aacc8c1933e9cd256c04890978095003 (patch)
tree18b9f7065863fa8bd32abad2ae2454471b2058f6 /tests
parent6c31546ced32fd968ae50da7803964c9195ebd62 (diff)
simplify nested ifs with identical elses
Diffstat (limited to 'tests')
-rw-r--r--tests/test_other.py47
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])