| function get(x) { |
| return x; |
| } |
| |
| function f(x) { |
| switch(x) { |
| case get(0): |
| return 0; |
| case get(1): |
| return 1; |
| case get("foo"): |
| return "foo"; |
| case get(true): |
| return true; |
| case get(false): |
| return false; |
| case get({}): |
| return {}; |
| case get(null): |
| return null; |
| case Number.MIN_VALUE: |
| return Number.MIN_VALUE; |
| case Math: |
| return Math; |
| default: |
| return -123; |
| } |
| } |
| |
| assertEq(f(0), 0); |
| assertEq(f(-0), 0); |
| assertEq(f(1), 1); |
| assertEq(f("foo"), "foo"); |
| assertEq(f(true), true); |
| assertEq(f(false), false); |
| assertEq(f({}), -123); |
| assertEq(f([]), -123); |
| assertEq(f(Math), Math); |
| |
| assertEq(f({x:1}), -123); |
| assertEq(f(333), -123); |
| assertEq(f(null), null); |
| assertEq(f(undefined), -123); |
| |
| assertEq(f(Number.MIN_VALUE), Number.MIN_VALUE); |
| |