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