diff options
Diffstat (limited to 'test/compress')
-rw-r--r-- | test/compress/blocks.js | 49 | ||||
-rw-r--r-- | test/compress/dead-code.js | 53 | ||||
-rw-r--r-- | test/compress/debugger.js | 24 | ||||
-rw-r--r-- | test/compress/properties.js | 25 | ||||
-rw-r--r-- | test/compress/sequences.js | 60 |
5 files changed, 211 insertions, 0 deletions
diff --git a/test/compress/blocks.js b/test/compress/blocks.js new file mode 100644 index 00000000..027b5d64 --- /dev/null +++ b/test/compress/blocks.js @@ -0,0 +1,49 @@ +remove_blocks: { + input: { + {;} + foo(); + {}; + { + {}; + }; + bar(); + {} + } + expect: { + foo(); + bar(); + } +} + +keep_some_blocks: { + input: { + // 1. + if (foo) { + {{{}}} + if (bar) baz(); + {{}} + } else { + stuff(); + } + + // 2. + if (foo) { + for (var i = 0; i < 5; ++i) + if (bar) baz(); + } else { + stuff(); + } + } + expect: { + // 1. + if (foo) { + if (bar) baz(); + } else stuff(); + + // 2. + if (foo) { + for (var i = 0; i < 5; ++i) + if (bar) baz(); + } else stuff(); + } +} diff --git a/test/compress/dead-code.js b/test/compress/dead-code.js new file mode 100644 index 00000000..bb955569 --- /dev/null +++ b/test/compress/dead-code.js @@ -0,0 +1,53 @@ +dead_code_1: { + options = { + dead_code: true + }; + input: { + function f() { + a(); + b(); + x = 10; + return; + if (x) { + y(); + } + } + } + expect: { + function f() { + a(); + b(); + x = 10; + return; + } + } +} + +dead_code_2_should_warn: { + options = { + dead_code: true + }; + input: { + function f() { + g(); + x = 10; + throw "foo"; + // completely discarding the `if` would introduce some + // bugs. UglifyJS v1 doesn't deal with this issue. + if (x) { + y(); + var x; + function g(){}; + } + } + } + expect: { + function f() { + g(); + x = 10; + throw "foo"; + var x; + function g(){}; + } + } +} diff --git a/test/compress/debugger.js b/test/compress/debugger.js new file mode 100644 index 00000000..7c270734 --- /dev/null +++ b/test/compress/debugger.js @@ -0,0 +1,24 @@ +keep_debugger: { + options = { + drop_debugger: false + }; + input: { + debugger; + } + expect: { + debugger; + } +} + +drop_debugger: { + options = { + drop_debugger: true + }; + input: { + debugger; + if (foo) debugger; + } + expect: { + if (foo); + } +} diff --git a/test/compress/properties.js b/test/compress/properties.js new file mode 100644 index 00000000..72e245ec --- /dev/null +++ b/test/compress/properties.js @@ -0,0 +1,25 @@ +keep_properties: { + options = { + properties: false + }; + input: { + a["foo"] = "bar"; + } + expect: { + a["foo"] = "bar"; + } +} + +dot_properties: { + options = { + properties: true + }; + input: { + a["foo"] = "bar"; + a["if"] = "if"; + } + expect: { + a.foo = "bar"; + a["if"] = "if"; + } +} diff --git a/test/compress/sequences.js b/test/compress/sequences.js new file mode 100644 index 00000000..ec0f4c97 --- /dev/null +++ b/test/compress/sequences.js @@ -0,0 +1,60 @@ +make_sequences_1: { + options = { + sequences: true + }; + input: { + foo(); + bar(); + baz(); + } + expect: { + foo(),bar(),baz(); + } +} + +make_sequences_2: { + options = { + sequences: true + }; + input: { + if (boo) { + foo(); + bar(); + baz(); + } else { + x(); + y(); + z(); + } + } + expect: { + if (boo) foo(),bar(),baz(); + else x(),y(),z(); + } +} + +make_sequences_3: { + options = { + sequences: true + }; + input: { + function f() { + foo(); + bar(); + return baz(); + } + function g() { + foo(); + bar(); + throw new Error(); + } + } + expect: { + function f() { + return foo(), bar(), baz(); + } + function g() { + throw foo(), bar(), new Error(); + } + } +} |