diff options
author | Andreas Gampe <agampe@google.com> | 2014-12-11 00:58:13 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-12-11 00:58:13 +0000 |
commit | 3e465bec65067ebfdf662469cf85dd82cd077bdd (patch) | |
tree | be96360e987a26b73970bddc4efdbc0e767c27cc /test | |
parent | 4381cd6760b5b0b772322b2257bc2ced5d05da5d (diff) | |
parent | 912430c96bb03ee8900ce18feb85268a96d015b7 (diff) | |
download | art-3e465bec65067ebfdf662469cf85dd82cd077bdd.zip art-3e465bec65067ebfdf662469cf85dd82cd077bdd.tar.gz art-3e465bec65067ebfdf662469cf85dd82cd077bdd.tar.bz2 |
Merge "ART: Extend run-test 015"
Diffstat (limited to 'test')
-rw-r--r-- | test/015-switch/expected.txt | 116 | ||||
-rw-r--r-- | test/015-switch/src/Main.java | 331 |
2 files changed, 447 insertions, 0 deletions
diff --git a/test/015-switch/expected.txt b/test/015-switch/expected.txt index 91b4714..be6d2ca 100644 --- a/test/015-switch/expected.txt +++ b/test/015-switch/expected.txt @@ -1,3 +1,119 @@ +packed +default +default +0 +1 +2 +default +default +packed2 +-2 +-1 +0 +1 +2 +default +default +packed3 +default +default +default +default +2 +3 +4 +5 +6 +default +default +packed4 +default +2147483646 +2147483647 +default +packed5 +-2147483648 +-2147483647 +default +packed6 +-2147483648 +default +packed7 +default +default +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +default +sparse +default +default +0 +1 +default +3 +default +default +sparse2 +-2 +-1 +0 +default +2 +default +default +sparse3 +default +default +default +default +2 +default +4 +5 +6 +default +default +sparse4 +2147483645 +default +2147483647 +default +sparse5 +-2147483648 +default +default +sparse7 +default +default +1 +2 +default +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +default CORRECT (one) CORRECT (not found) CORRECT (large) diff --git a/test/015-switch/src/Main.java b/test/015-switch/src/Main.java index dd97a8c..2a7995a 100644 --- a/test/015-switch/src/Main.java +++ b/test/015-switch/src/Main.java @@ -18,7 +18,338 @@ * Test switch() blocks */ public class Main { + + // TODO: This should be translated to smali tests, so it is guaranteed we have the right kind + // of switch. + + // Simple packed-switch. + public static void packedSwitch(int value) { + switch (value) { + case 0: + System.out.println("0"); break; + case 1: + System.out.println("1"); break; + case 2: + System.out.println("2"); break; + case 3: + System.out.println("3"); break; + case 4: + System.out.println("4"); break; + default: + System.out.println("default"); break; + } + } + + // Simple packed-switch starting at a negative index. + public static void packedSwitch2(int value) { + switch (value) { + case -3: + System.out.println("-3"); break; + case -2: + System.out.println("-2"); break; + case -1: + System.out.println("-1"); break; + case 0: + System.out.println("0"); break; + case 1: + System.out.println("1"); break; + case 2: + System.out.println("2"); break; + default: + System.out.println("default"); break; + } + } + + // Simple packed-switch starting above 0. + public static void packedSwitch3(int value) { + switch (value) { + case 2: + System.out.println("2"); break; + case 3: + System.out.println("3"); break; + case 4: + System.out.println("4"); break; + case 5: + System.out.println("5"); break; + case 6: + System.out.println("6"); break; + default: + System.out.println("default"); break; + } + } + + // Simple packed-switch going up to max_int. + public static void packedSwitch4(int value) { + switch (value) { + case Integer.MAX_VALUE - 1: + System.out.println(Integer.MAX_VALUE - 1); break; + case Integer.MAX_VALUE: + System.out.println(Integer.MAX_VALUE); break; + default: + System.out.println("default"); break; + } + } + + // Simple packed-switch starting at min_int. + public static void packedSwitch5(int value) { + switch (value) { + case Integer.MIN_VALUE: + System.out.println(Integer.MIN_VALUE); break; + case Integer.MIN_VALUE + 1: + System.out.println(Integer.MIN_VALUE + 1); break; + default: + System.out.println("default"); break; + } + } + + // Simple (packed-)switch with only min_int. + public static void packedSwitch6(int value) { + switch (value) { + case Integer.MIN_VALUE: + System.out.println(Integer.MIN_VALUE); break; + default: + System.out.println("default"); break; + } + } + + // Long packed-switch that might lead to not creating chained-ifs. + public static void packedSwitch7(int value) { + switch (value) { + case 1: + System.out.println(1); break; + case 2: + System.out.println(2); break; + case 3: + System.out.println(3); break; + case 4: + System.out.println(4); break; + case 5: + System.out.println(5); break; + case 6: + System.out.println(6); break; + case 7: + System.out.println(7); break; + case 8: + System.out.println(8); break; + case 9: + System.out.println(9); break; + case 10: + System.out.println(10); break; + case 11: + System.out.println(11); break; + case 12: + System.out.println(12); break; + case 13: + System.out.println(13); break; + case 14: + System.out.println(14); break; + case 15: + System.out.println(15); break; + default: + System.out.println("default"); break; + } + } + + // Sparse switch, just leave a gap. + public static void sparseSwitch(int value) { + switch (value) { + case 0: + System.out.println("0"); break; + case 1: + System.out.println("1"); break; + case 3: + System.out.println("3"); break; + case 4: + System.out.println("4"); break; + default: + System.out.println("default"); break; + } + } + + // Simple sparse-switch starting at a negative index. + public static void sparseSwitch2(int value) { + switch (value) { + case -3: + System.out.println("-3"); break; + case -2: + System.out.println("-2"); break; + case -1: + System.out.println("-1"); break; + case 0: + System.out.println("0"); break; + case 2: + System.out.println("2"); break; + default: + System.out.println("default"); break; + } + } + + // Simple sparse-switch starting above 0. + public static void sparseSwitch3(int value) { + switch (value) { + case 2: + System.out.println("2"); break; + case 4: + System.out.println("4"); break; + case 5: + System.out.println("5"); break; + case 6: + System.out.println("6"); break; + default: + System.out.println("default"); break; + } + } + + // Simple sparse-switch going up to max_int. + public static void sparseSwitch4(int value) { + switch (value) { + case Integer.MAX_VALUE - 2: + System.out.println(Integer.MAX_VALUE - 2); break; + case Integer.MAX_VALUE: + System.out.println(Integer.MAX_VALUE); break; + default: + System.out.println("default"); break; + } + } + + // Simple sparse-switch starting at min_int. + public static void sparseSwitch5(int value) { + switch (value) { + case Integer.MIN_VALUE: + System.out.println(Integer.MIN_VALUE); break; + case Integer.MIN_VALUE + 2: + System.out.println(Integer.MIN_VALUE + 2); break; + default: + System.out.println("default"); break; + } + } + + // Long sparse-switch that might lead to not creating chained-ifs. + public static void sparseSwitch7(int value) { + switch (value) { + case 1: + System.out.println(1); break; + case 2: + System.out.println(2); break; + case 4: + System.out.println(4); break; + case 5: + System.out.println(5); break; + case 6: + System.out.println(6); break; + case 7: + System.out.println(7); break; + case 8: + System.out.println(8); break; + case 9: + System.out.println(9); break; + case 10: + System.out.println(10); break; + case 11: + System.out.println(11); break; + case 12: + System.out.println(12); break; + case 13: + System.out.println(13); break; + case 14: + System.out.println(14); break; + case 15: + System.out.println(15); break; + default: + System.out.println("default"); break; + } + } + public static void main(String args[]) { + /* + * Note: We are using for loops and calls to hopefully avoid simplifying the switch + * structure from constant propagation. When inlining is supported, this needs to + * be revisited. + */ + + System.out.println("packed"); + for (int i = -2; i < 3; i++) { + packedSwitch(i); + } + packedSwitch(Integer.MIN_VALUE); + packedSwitch(Integer.MAX_VALUE); + + System.out.println("packed2"); + for (int i = -2; i < 3; i++) { + packedSwitch2(i); + } + packedSwitch2(Integer.MIN_VALUE); + packedSwitch2(Integer.MAX_VALUE); + + System.out.println("packed3"); + for (int i = -2; i < 7; i++) { + packedSwitch3(i); + } + packedSwitch3(Integer.MIN_VALUE); + packedSwitch3(Integer.MAX_VALUE); + + System.out.println("packed4"); + for (int i = Integer.MAX_VALUE - 2; i > 0; i++) { + packedSwitch4(i); + } + packedSwitch4(Integer.MIN_VALUE); + + System.out.println("packed5"); + for (int i = Integer.MIN_VALUE; i < Integer.MIN_VALUE + 2; i++) { + packedSwitch5(i); + } + packedSwitch5(Integer.MAX_VALUE); + + System.out.println("packed6"); + packedSwitch6(Integer.MIN_VALUE); + packedSwitch6(Integer.MAX_VALUE); + + System.out.println("packed7"); + for (int i = -1; i < 17; i++) { + packedSwitch7(i); + } + + + System.out.println("sparse"); + for (int i = -2; i < 4; i++) { + sparseSwitch(i); + } + sparseSwitch(Integer.MIN_VALUE); + sparseSwitch(Integer.MAX_VALUE); + + System.out.println("sparse2"); + for (int i = -2; i < 3; i++) { + sparseSwitch2(i); + } + sparseSwitch2(Integer.MIN_VALUE); + sparseSwitch2(Integer.MAX_VALUE); + + System.out.println("sparse3"); + for (int i = -2; i < 7; i++) { + sparseSwitch3(i); + } + sparseSwitch3(Integer.MIN_VALUE); + sparseSwitch3(Integer.MAX_VALUE); + + System.out.println("sparse4"); + for (int i = Integer.MAX_VALUE - 2; i > 0; i++) { + sparseSwitch4(i); + } + sparseSwitch4(Integer.MIN_VALUE); + + System.out.println("sparse5"); + for (int i = Integer.MIN_VALUE; i < Integer.MIN_VALUE + 2; i++) { + sparseSwitch5(i); + } + sparseSwitch5(Integer.MAX_VALUE); + + System.out.println("sparse7"); + for (int i = -1; i < 17; i++) { + sparseSwitch7(i); + } + + // Older tests. + int a = 1; switch (a) { |