aboutsummaryrefslogtreecommitdiff
path: root/test/compress
diff options
context:
space:
mode:
Diffstat (limited to 'test/compress')
-rw-r--r--test/compress/blocks.js49
-rw-r--r--test/compress/dead-code.js53
-rw-r--r--test/compress/debugger.js24
-rw-r--r--test/compress/properties.js25
-rw-r--r--test/compress/sequences.js60
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();
+ }
+ }
+}