Chromium Code Reviews| Index: test/mjsunit/wasm/asm-wasm.js |
| diff --git a/test/mjsunit/wasm/asm-wasm.js b/test/mjsunit/wasm/asm-wasm.js |
| index 2efb006436a23333c7bf5bb48d92a46022a7d2d5..b7e866eeb8675a021ccc06633d3dfea4f362a176 100644 |
| --- a/test/mjsunit/wasm/asm-wasm.js |
| +++ b/test/mjsunit/wasm/asm-wasm.js |
| @@ -1493,3 +1493,134 @@ assertWasm(1, TestXor); |
| assertEquals(0x80000000, wasm.u0x80000000()); |
| assertEquals(0x87654321, wasm.u0x87654321()); |
| })(); |
| + |
| +(function TestSwitchWithBrTable() { |
|
titzer
2016/04/01 09:22:45
Please pull these out into a new test file: test/m
aseemgarg
2016/04/07 23:32:36
Done.
|
| + function asmModule() { |
| + "use asm"; |
| + function main(x) { |
| + x = x|0; |
| + switch(x|0) { |
| + case 14: return 14; |
| + case 12: return 12; |
| + case 15: return 15; |
| + case 19: return 19; |
| + case 18: return 18; |
| + case 16: return 16; |
| + default: return -1; |
| + } |
| + return 0; |
| + } |
| + return { |
| + main: main, |
| + }; |
| + } |
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| + assertEquals(12, wasm.main(12)); |
| + assertEquals(14, wasm.main(14)); |
| + assertEquals(15, wasm.main(15)); |
| + assertEquals(16, wasm.main(16)); |
| + assertEquals(18, wasm.main(18)); |
| + assertEquals(19, wasm.main(19)); |
| + assertEquals(-1, wasm.main(21)); |
| +})(); |
| + |
| +(function TestSwitchWithBalancedTree() { |
|
titzer
2016/04/01 09:22:45
There need to be a lot more tests, e.g. with break
aseemgarg
2016/04/07 23:32:36
Some of the tests were there before. Added some mo
|
| + function asmModule() { |
| + "use asm"; |
| + function main(x) { |
| + x = x|0; |
| + switch(x|0) { |
| + case 5: return 5; |
| + case 1: return 1; |
| + case 6: return 6; |
| + case 9: return 9; |
| + case -4: return -4; |
| + } |
| + return 0; |
| + } |
| + return { |
| + main: main, |
| + }; |
| + } |
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| + assertEquals(-4, wasm.main(-4)); |
| + assertEquals(1, wasm.main(1)); |
| + assertEquals(5, wasm.main(5)); |
| + assertEquals(6, wasm.main(6)); |
| + assertEquals(9, wasm.main(9)); |
| + assertEquals(0, wasm.main(11)); |
| +})(); |
| + |
| +(function TestSwitchHybrid() { |
| + function asmModule() { |
| + "use asm"; |
| + function main(x) { |
| + x = x|0; |
| + switch(x|0) { |
| + case 1: return 1; |
| + case 2: return 2; |
| + case 3: return 3; |
| + case 4: return 4; |
| + case 7: return 7; |
| + case 10: return 10; |
| + case 11: return 11; |
| + case 12: return 12; |
| + case 13: return 13; |
| + case 16: return 16; |
| + default: return -1; |
| + } |
| + return 0; |
| + } |
| + return { |
| + main: main, |
| + }; |
| + } |
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| + assertEquals(1, wasm.main(1)); |
| + assertEquals(2, wasm.main(2)); |
| + assertEquals(3, wasm.main(3)); |
| + assertEquals(4, wasm.main(4)); |
| + assertEquals(7, wasm.main(7)); |
| + assertEquals(10, wasm.main(10)); |
| + assertEquals(11, wasm.main(11)); |
| + assertEquals(12, wasm.main(12)); |
| + assertEquals(13, wasm.main(13)); |
| + assertEquals(16, wasm.main(16)); |
| + assertEquals(-1, wasm.main(20)); |
| +})(); |
| + |
| +(function TestSwitchWithDefaultOnly() { |
| + function asmModule() { |
| + "use asm"; |
| + function main(x) { |
| + x = x|0; |
| + switch(x|0) { |
| + default: return -10; |
| + } |
| + return 0; |
| + } |
| + return { |
| + main: main, |
| + }; |
| + } |
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| + assertEquals(-10, wasm.main(2)); |
| + assertEquals(-10, wasm.main(54)); |
| +})(); |
| + |
| +(function TestEmptySwitch() { |
| + function asmModule() { |
| + "use asm"; |
| + function main(x) { |
| + x = x|0; |
| + switch(x|0) { |
| + } |
| + return 73; |
| + } |
| + return { |
| + main: main, |
| + }; |
| + } |
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| + assertEquals(73, wasm.main(7)); |
| +})(); |
|
bradn
2016/04/04 22:31:12
Yeah actually what would be really nice to vet tab
aseemgarg
2016/04/07 23:32:36
Done.
|