aboutsummaryrefslogtreecommitdiff
path: root/test/mocha
diff options
context:
space:
mode:
Diffstat (limited to 'test/mocha')
-rw-r--r--test/mocha/accessorTokens-1492.js32
-rw-r--r--test/mocha/cli.js53
-rw-r--r--test/mocha/minify.js15
-rw-r--r--test/mocha/operator.js489
4 files changed, 588 insertions, 1 deletions
diff --git a/test/mocha/accessorTokens-1492.js b/test/mocha/accessorTokens-1492.js
new file mode 100644
index 00000000..861414ee
--- /dev/null
+++ b/test/mocha/accessorTokens-1492.js
@@ -0,0 +1,32 @@
+var UglifyJS = require('../../');
+var assert = require("assert");
+
+describe("Accessor tokens", function() {
+ it("Should fill the token information for accessors (issue #1492)", function() {
+ // location 0 1 2 3 4
+ // 01234567890123456789012345678901234567890123456789
+ var ast = UglifyJS.parse("var obj = { get latest() { return undefined; } }");
+
+ // test all AST_ObjectProperty tokens are set as expected
+ var checkedAST_ObjectProperty = false;
+ var checkWalker = new UglifyJS.TreeWalker(function(node, descend) {
+ if (node instanceof UglifyJS.AST_ObjectProperty) {
+ checkedAST_ObjectProperty = true;
+
+ assert.equal(node.start.pos, 12);
+ assert.equal(node.end.endpos, 46);
+
+ assert(node.key instanceof UglifyJS.AST_SymbolRef);
+ assert.equal(node.key.start.pos, 16);
+ assert.equal(node.key.end.endpos, 22);
+
+ assert(node.value instanceof UglifyJS.AST_Accessor);
+ assert.equal(node.value.start.pos, 22);
+ assert.equal(node.value.end.endpos, 46);
+
+ }
+ });
+ ast.walk(checkWalker);
+ assert(checkedAST_ObjectProperty, "AST_ObjectProperty not found");
+ });
+}); \ No newline at end of file
diff --git a/test/mocha/cli.js b/test/mocha/cli.js
index a8de05c5..450df1fd 100644
--- a/test/mocha/cli.js
+++ b/test/mocha/cli.js
@@ -1,10 +1,11 @@
var assert = require("assert");
var exec = require("child_process").exec;
+var readFileSync = require("fs").readFileSync;
describe("bin/uglifyjs", function () {
var uglifyjscmd = '"' + process.argv[0] + '" bin/uglifyjs';
it("should produce a functional build when using --self", function (done) {
- this.timeout(5000);
+ this.timeout(15000);
var command = uglifyjscmd + ' --self -cm --wrap WrappedUglifyJS';
@@ -100,4 +101,54 @@ describe("bin/uglifyjs", function () {
done();
});
});
+ it("Should work with --define (simple)", function (done) {
+ var command = uglifyjscmd + ' test/input/global_defs/simple.js --define D=5 -c';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, "console.log(5);\n");
+ done();
+ });
+ });
+ it("Should work with --define (nested)", function (done) {
+ var command = uglifyjscmd + ' test/input/global_defs/nested.js --define C.D=5,C.V=3 -c';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, "console.log(3,5);\n");
+ done();
+ });
+ });
+ it("Should work with --define (AST_Node)", function (done) {
+ var command = uglifyjscmd + ' test/input/global_defs/simple.js --define console.log=stdout.println -c';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, "stdout.println(D);\n");
+ done();
+ });
+ });
+ it("Should work with `--beautify`", function (done) {
+ var command = uglifyjscmd + ' test/input/issue-1482/input.js -b';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, readFileSync("test/input/issue-1482/default.js", "utf8"));
+ done();
+ });
+ });
+ it("Should work with `--beautify bracketize`", function (done) {
+ var command = uglifyjscmd + ' test/input/issue-1482/input.js -b bracketize';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, readFileSync("test/input/issue-1482/bracketize.js", "utf8"));
+ done();
+ });
+ });
});
diff --git a/test/mocha/minify.js b/test/mocha/minify.js
index 70cf73ae..8fe1565f 100644
--- a/test/mocha/minify.js
+++ b/test/mocha/minify.js
@@ -95,4 +95,19 @@ describe("minify", function() {
assert.strictEqual(code, "var a=function(n){return n};");
});
});
+
+ describe("#__PURE__", function() {
+ it("should drop #__PURE__ hint after use", function() {
+ var result = Uglify.minify('//@__PURE__ comment1 #__PURE__ comment2\n foo(), bar();', {
+ fromString: true,
+ output: {
+ comments: "all",
+ beautify: false,
+ }
+ });
+ var code = result.code;
+ assert.strictEqual(code, "// comment1 comment2\nbar();");
+ });
+ });
+
});
diff --git a/test/mocha/operator.js b/test/mocha/operator.js
new file mode 100644
index 00000000..adef3abd
--- /dev/null
+++ b/test/mocha/operator.js
@@ -0,0 +1,489 @@
+var UglifyJS = require("../../");
+var assert = require("assert");
+
+describe("operator", function() {
+ it("Should handle mixing of ++/+/--/- correctly", function() {
+ function evaluate(exp) {
+ return new Function("var a=1,b=2,c=" + exp + ";return{a:a,b:b,c:c}")();
+ }
+
+ [ "", "+", "-" ].forEach(function(p) {
+ [ "++a", "--a", "a", "a--", "a++" ].forEach(function(a) {
+ [ "+", "-" ].forEach(function(o) {
+ [ "", "+", "-" ].forEach(function(q) {
+ [ "++b", "--b", "b", "b--", "b++" ].forEach(function(b) {
+ var exp = [p, a, o, q, b].join(" ");
+ var orig = evaluate(exp);
+ var uglify = evaluate(UglifyJS.parse(exp).print_to_string());
+ assert.strictEqual(orig.a, uglify.a);
+ assert.strictEqual(orig.b, uglify.b);
+ assert.strictEqual(orig.c, uglify.c);
+ var beautify = evaluate(UglifyJS.parse(exp).print_to_string({
+ beautify: true
+ }));
+ assert.strictEqual(orig.a, beautify.a);
+ assert.strictEqual(orig.b, beautify.b);
+ assert.strictEqual(orig.c, beautify.c);
+ });
+ });
+ });
+ });
+ });
+ });
+ it("Should remove extraneous spaces", function() {
+ [
+ [ "++a + ++b", "++a+ ++b" ],
+ [ "++a + --b", "++a+--b" ],
+ [ "++a + b", "++a+b" ],
+ [ "++a + b--", "++a+b--" ],
+ [ "++a + b++", "++a+b++" ],
+ [ "++a + + ++b", "++a+ + ++b" ],
+ [ "++a + + --b", "++a+ +--b" ],
+ [ "++a + + b", "++a+ +b" ],
+ [ "++a + + b--", "++a+ +b--" ],
+ [ "++a + + b++", "++a+ +b++" ],
+ [ "++a + - ++b", "++a+-++b" ],
+ [ "++a + - --b", "++a+- --b" ],
+ [ "++a + - b", "++a+-b" ],
+ [ "++a + - b--", "++a+-b--" ],
+ [ "++a + - b++", "++a+-b++" ],
+ [ "++a - ++b", "++a-++b" ],
+ [ "++a - --b", "++a- --b" ],
+ [ "++a - b", "++a-b" ],
+ [ "++a - b--", "++a-b--" ],
+ [ "++a - b++", "++a-b++" ],
+ [ "++a - + ++b", "++a-+ ++b" ],
+ [ "++a - + --b", "++a-+--b" ],
+ [ "++a - + b", "++a-+b" ],
+ [ "++a - + b--", "++a-+b--" ],
+ [ "++a - + b++", "++a-+b++" ],
+ [ "++a - - ++b", "++a- -++b" ],
+ [ "++a - - --b", "++a- - --b" ],
+ [ "++a - - b", "++a- -b" ],
+ [ "++a - - b--", "++a- -b--" ],
+ [ "++a - - b++", "++a- -b++" ],
+ [ "--a + ++b", "--a+ ++b" ],
+ [ "--a + --b", "--a+--b" ],
+ [ "--a + b", "--a+b" ],
+ [ "--a + b--", "--a+b--" ],
+ [ "--a + b++", "--a+b++" ],
+ [ "--a + + ++b", "--a+ + ++b" ],
+ [ "--a + + --b", "--a+ +--b" ],
+ [ "--a + + b", "--a+ +b" ],
+ [ "--a + + b--", "--a+ +b--" ],
+ [ "--a + + b++", "--a+ +b++" ],
+ [ "--a + - ++b", "--a+-++b" ],
+ [ "--a + - --b", "--a+- --b" ],
+ [ "--a + - b", "--a+-b" ],
+ [ "--a + - b--", "--a+-b--" ],
+ [ "--a + - b++", "--a+-b++" ],
+ [ "--a - ++b", "--a-++b" ],
+ [ "--a - --b", "--a- --b" ],
+ [ "--a - b", "--a-b" ],
+ [ "--a - b--", "--a-b--" ],
+ [ "--a - b++", "--a-b++" ],
+ [ "--a - + ++b", "--a-+ ++b" ],
+ [ "--a - + --b", "--a-+--b" ],
+ [ "--a - + b", "--a-+b" ],
+ [ "--a - + b--", "--a-+b--" ],
+ [ "--a - + b++", "--a-+b++" ],
+ [ "--a - - ++b", "--a- -++b" ],
+ [ "--a - - --b", "--a- - --b" ],
+ [ "--a - - b", "--a- -b" ],
+ [ "--a - - b--", "--a- -b--" ],
+ [ "--a - - b++", "--a- -b++" ],
+ [ "a + ++b", "a+ ++b" ],
+ [ "a + --b", "a+--b" ],
+ [ "a + b", "a+b" ],
+ [ "a + b--", "a+b--" ],
+ [ "a + b++", "a+b++" ],
+ [ "a + + ++b", "a+ + ++b" ],
+ [ "a + + --b", "a+ +--b" ],
+ [ "a + + b", "a+ +b" ],
+ [ "a + + b--", "a+ +b--" ],
+ [ "a + + b++", "a+ +b++" ],
+ [ "a + - ++b", "a+-++b" ],
+ [ "a + - --b", "a+- --b" ],
+ [ "a + - b", "a+-b" ],
+ [ "a + - b--", "a+-b--" ],
+ [ "a + - b++", "a+-b++" ],
+ [ "a - ++b", "a-++b" ],
+ [ "a - --b", "a- --b" ],
+ [ "a - b", "a-b" ],
+ [ "a - b--", "a-b--" ],
+ [ "a - b++", "a-b++" ],
+ [ "a - + ++b", "a-+ ++b" ],
+ [ "a - + --b", "a-+--b" ],
+ [ "a - + b", "a-+b" ],
+ [ "a - + b--", "a-+b--" ],
+ [ "a - + b++", "a-+b++" ],
+ [ "a - - ++b", "a- -++b" ],
+ [ "a - - --b", "a- - --b" ],
+ [ "a - - b", "a- -b" ],
+ [ "a - - b--", "a- -b--" ],
+ [ "a - - b++", "a- -b++" ],
+ [ "a-- + ++b", "a--+ ++b" ],
+ [ "a-- + --b", "a--+--b" ],
+ [ "a-- + b", "a--+b" ],
+ [ "a-- + b--", "a--+b--" ],
+ [ "a-- + b++", "a--+b++" ],
+ [ "a-- + + ++b", "a--+ + ++b" ],
+ [ "a-- + + --b", "a--+ +--b" ],
+ [ "a-- + + b", "a--+ +b" ],
+ [ "a-- + + b--", "a--+ +b--" ],
+ [ "a-- + + b++", "a--+ +b++" ],
+ [ "a-- + - ++b", "a--+-++b" ],
+ [ "a-- + - --b", "a--+- --b" ],
+ [ "a-- + - b", "a--+-b" ],
+ [ "a-- + - b--", "a--+-b--" ],
+ [ "a-- + - b++", "a--+-b++" ],
+ [ "a-- - ++b", "a---++b" ],
+ [ "a-- - --b", "a--- --b" ],
+ [ "a-- - b", "a---b" ],
+ [ "a-- - b--", "a---b--" ],
+ [ "a-- - b++", "a---b++" ],
+ [ "a-- - + ++b", "a---+ ++b" ],
+ [ "a-- - + --b", "a---+--b" ],
+ [ "a-- - + b", "a---+b" ],
+ [ "a-- - + b--", "a---+b--" ],
+ [ "a-- - + b++", "a---+b++" ],
+ [ "a-- - - ++b", "a--- -++b" ],
+ [ "a-- - - --b", "a--- - --b" ],
+ [ "a-- - - b", "a--- -b" ],
+ [ "a-- - - b--", "a--- -b--" ],
+ [ "a-- - - b++", "a--- -b++" ],
+ [ "a++ + ++b", "a+++ ++b" ],
+ [ "a++ + --b", "a+++--b" ],
+ [ "a++ + b", "a+++b" ],
+ [ "a++ + b--", "a+++b--" ],
+ [ "a++ + b++", "a+++b++" ],
+ [ "a++ + + ++b", "a+++ + ++b" ],
+ [ "a++ + + --b", "a+++ +--b" ],
+ [ "a++ + + b", "a+++ +b" ],
+ [ "a++ + + b--", "a+++ +b--" ],
+ [ "a++ + + b++", "a+++ +b++" ],
+ [ "a++ + - ++b", "a+++-++b" ],
+ [ "a++ + - --b", "a+++- --b" ],
+ [ "a++ + - b", "a+++-b" ],
+ [ "a++ + - b--", "a+++-b--" ],
+ [ "a++ + - b++", "a+++-b++" ],
+ [ "a++ - ++b", "a++-++b" ],
+ [ "a++ - --b", "a++- --b" ],
+ [ "a++ - b", "a++-b" ],
+ [ "a++ - b--", "a++-b--" ],
+ [ "a++ - b++", "a++-b++" ],
+ [ "a++ - + ++b", "a++-+ ++b" ],
+ [ "a++ - + --b", "a++-+--b" ],
+ [ "a++ - + b", "a++-+b" ],
+ [ "a++ - + b--", "a++-+b--" ],
+ [ "a++ - + b++", "a++-+b++" ],
+ [ "a++ - - ++b", "a++- -++b" ],
+ [ "a++ - - --b", "a++- - --b" ],
+ [ "a++ - - b", "a++- -b" ],
+ [ "a++ - - b--", "a++- -b--" ],
+ [ "a++ - - b++", "a++- -b++" ],
+ [ "+ ++a + ++b", "+ ++a+ ++b" ],
+ [ "+ ++a + --b", "+ ++a+--b" ],
+ [ "+ ++a + b", "+ ++a+b" ],
+ [ "+ ++a + b--", "+ ++a+b--" ],
+ [ "+ ++a + b++", "+ ++a+b++" ],
+ [ "+ ++a + + ++b", "+ ++a+ + ++b" ],
+ [ "+ ++a + + --b", "+ ++a+ +--b" ],
+ [ "+ ++a + + b", "+ ++a+ +b" ],
+ [ "+ ++a + + b--", "+ ++a+ +b--" ],
+ [ "+ ++a + + b++", "+ ++a+ +b++" ],
+ [ "+ ++a + - ++b", "+ ++a+-++b" ],
+ [ "+ ++a + - --b", "+ ++a+- --b" ],
+ [ "+ ++a + - b", "+ ++a+-b" ],
+ [ "+ ++a + - b--", "+ ++a+-b--" ],
+ [ "+ ++a + - b++", "+ ++a+-b++" ],
+ [ "+ ++a - ++b", "+ ++a-++b" ],
+ [ "+ ++a - --b", "+ ++a- --b" ],
+ [ "+ ++a - b", "+ ++a-b" ],
+ [ "+ ++a - b--", "+ ++a-b--" ],
+ [ "+ ++a - b++", "+ ++a-b++" ],
+ [ "+ ++a - + ++b", "+ ++a-+ ++b" ],
+ [ "+ ++a - + --b", "+ ++a-+--b" ],
+ [ "+ ++a - + b", "+ ++a-+b" ],
+ [ "+ ++a - + b--", "+ ++a-+b--" ],
+ [ "+ ++a - + b++", "+ ++a-+b++" ],
+ [ "+ ++a - - ++b", "+ ++a- -++b" ],
+ [ "+ ++a - - --b", "+ ++a- - --b" ],
+ [ "+ ++a - - b", "+ ++a- -b" ],
+ [ "+ ++a - - b--", "+ ++a- -b--" ],
+ [ "+ ++a - - b++", "+ ++a- -b++" ],
+ [ "+ --a + ++b", "+--a+ ++b" ],
+ [ "+ --a + --b", "+--a+--b" ],
+ [ "+ --a + b", "+--a+b" ],
+ [ "+ --a + b--", "+--a+b--" ],
+ [ "+ --a + b++", "+--a+b++" ],
+ [ "+ --a + + ++b", "+--a+ + ++b" ],
+ [ "+ --a + + --b", "+--a+ +--b" ],
+ [ "+ --a + + b", "+--a+ +b" ],
+ [ "+ --a + + b--", "+--a+ +b--" ],
+ [ "+ --a + + b++", "+--a+ +b++" ],
+ [ "+ --a + - ++b", "+--a+-++b" ],
+ [ "+ --a + - --b", "+--a+- --b" ],
+ [ "+ --a + - b", "+--a+-b" ],
+ [ "+ --a + - b--", "+--a+-b--" ],
+ [ "+ --a + - b++", "+--a+-b++" ],
+ [ "+ --a - ++b", "+--a-++b" ],
+ [ "+ --a - --b", "+--a- --b" ],
+ [ "+ --a - b", "+--a-b" ],
+ [ "+ --a - b--", "+--a-b--" ],
+ [ "+ --a - b++", "+--a-b++" ],
+ [ "+ --a - + ++b", "+--a-+ ++b" ],
+ [ "+ --a - + --b", "+--a-+--b" ],
+ [ "+ --a - + b", "+--a-+b" ],
+ [ "+ --a - + b--", "+--a-+b--" ],
+ [ "+ --a - + b++", "+--a-+b++" ],
+ [ "+ --a - - ++b", "+--a- -++b" ],
+ [ "+ --a - - --b", "+--a- - --b" ],
+ [ "+ --a - - b", "+--a- -b" ],
+ [ "+ --a - - b--", "+--a- -b--" ],
+ [ "+ --a - - b++", "+--a- -b++" ],
+ [ "+ a + ++b", "+a+ ++b" ],
+ [ "+ a + --b", "+a+--b" ],
+ [ "+ a + b", "+a+b" ],
+ [ "+ a + b--", "+a+b--" ],
+ [ "+ a + b++", "+a+b++" ],
+ [ "+ a + + ++b", "+a+ + ++b" ],
+ [ "+ a + + --b", "+a+ +--b" ],
+ [ "+ a + + b", "+a+ +b" ],
+ [ "+ a + + b--", "+a+ +b--" ],
+ [ "+ a + + b++", "+a+ +b++" ],
+ [ "+ a + - ++b", "+a+-++b" ],
+ [ "+ a + - --b", "+a+- --b" ],
+ [ "+ a + - b", "+a+-b" ],
+ [ "+ a + - b--", "+a+-b--" ],
+ [ "+ a + - b++", "+a+-b++" ],
+ [ "+ a - ++b", "+a-++b" ],
+ [ "+ a - --b", "+a- --b" ],
+ [ "+ a - b", "+a-b" ],
+ [ "+ a - b--", "+a-b--" ],
+ [ "+ a - b++", "+a-b++" ],
+ [ "+ a - + ++b", "+a-+ ++b" ],
+ [ "+ a - + --b", "+a-+--b" ],
+ [ "+ a - + b", "+a-+b" ],
+ [ "+ a - + b--", "+a-+b--" ],
+ [ "+ a - + b++", "+a-+b++" ],
+ [ "+ a - - ++b", "+a- -++b" ],
+ [ "+ a - - --b", "+a- - --b" ],
+ [ "+ a - - b", "+a- -b" ],
+ [ "+ a - - b--", "+a- -b--" ],
+ [ "+ a - - b++", "+a- -b++" ],
+ [ "+ a-- + ++b", "+a--+ ++b" ],
+ [ "+ a-- + --b", "+a--+--b" ],
+ [ "+ a-- + b", "+a--+b" ],
+ [ "+ a-- + b--", "+a--+b--" ],
+ [ "+ a-- + b++", "+a--+b++" ],
+ [ "+ a-- + + ++b", "+a--+ + ++b" ],
+ [ "+ a-- + + --b", "+a--+ +--b" ],
+ [ "+ a-- + + b", "+a--+ +b" ],
+ [ "+ a-- + + b--", "+a--+ +b--" ],
+ [ "+ a-- + + b++", "+a--+ +b++" ],
+ [ "+ a-- + - ++b", "+a--+-++b" ],
+ [ "+ a-- + - --b", "+a--+- --b" ],
+ [ "+ a-- + - b", "+a--+-b" ],
+ [ "+ a-- + - b--", "+a--+-b--" ],
+ [ "+ a-- + - b++", "+a--+-b++" ],
+ [ "+ a-- - ++b", "+a---++b" ],
+ [ "+ a-- - --b", "+a--- --b" ],
+ [ "+ a-- - b", "+a---b" ],
+ [ "+ a-- - b--", "+a---b--" ],
+ [ "+ a-- - b++", "+a---b++" ],
+ [ "+ a-- - + ++b", "+a---+ ++b" ],
+ [ "+ a-- - + --b", "+a---+--b" ],
+ [ "+ a-- - + b", "+a---+b" ],
+ [ "+ a-- - + b--", "+a---+b--" ],
+ [ "+ a-- - + b++", "+a---+b++" ],
+ [ "+ a-- - - ++b", "+a--- -++b" ],
+ [ "+ a-- - - --b", "+a--- - --b" ],
+ [ "+ a-- - - b", "+a--- -b" ],
+ [ "+ a-- - - b--", "+a--- -b--" ],
+ [ "+ a-- - - b++", "+a--- -b++" ],
+ [ "+ a++ + ++b", "+a+++ ++b" ],
+ [ "+ a++ + --b", "+a+++--b" ],
+ [ "+ a++ + b", "+a+++b" ],
+ [ "+ a++ + b--", "+a+++b--" ],
+ [ "+ a++ + b++", "+a+++b++" ],
+ [ "+ a++ + + ++b", "+a+++ + ++b" ],
+ [ "+ a++ + + --b", "+a+++ +--b" ],
+ [ "+ a++ + + b", "+a+++ +b" ],
+ [ "+ a++ + + b--", "+a+++ +b--" ],
+ [ "+ a++ + + b++", "+a+++ +b++" ],
+ [ "+ a++ + - ++b", "+a+++-++b" ],
+ [ "+ a++ + - --b", "+a+++- --b" ],
+ [ "+ a++ + - b", "+a+++-b" ],
+ [ "+ a++ + - b--", "+a+++-b--" ],
+ [ "+ a++ + - b++", "+a+++-b++" ],
+ [ "+ a++ - ++b", "+a++-++b" ],
+ [ "+ a++ - --b", "+a++- --b" ],
+ [ "+ a++ - b", "+a++-b" ],
+ [ "+ a++ - b--", "+a++-b--" ],
+ [ "+ a++ - b++", "+a++-b++" ],
+ [ "+ a++ - + ++b", "+a++-+ ++b" ],
+ [ "+ a++ - + --b", "+a++-+--b" ],
+ [ "+ a++ - + b", "+a++-+b" ],
+ [ "+ a++ - + b--", "+a++-+b--" ],
+ [ "+ a++ - + b++", "+a++-+b++" ],
+ [ "+ a++ - - ++b", "+a++- -++b" ],
+ [ "+ a++ - - --b", "+a++- - --b" ],
+ [ "+ a++ - - b", "+a++- -b" ],
+ [ "+ a++ - - b--", "+a++- -b--" ],
+ [ "+ a++ - - b++", "+a++- -b++" ],
+ [ "- ++a + ++b", "-++a+ ++b" ],
+ [ "- ++a + --b", "-++a+--b" ],
+ [ "- ++a + b", "-++a+b" ],
+ [ "- ++a + b--", "-++a+b--" ],
+ [ "- ++a + b++", "-++a+b++" ],
+ [ "- ++a + + ++b", "-++a+ + ++b" ],
+ [ "- ++a + + --b", "-++a+ +--b" ],
+ [ "- ++a + + b", "-++a+ +b" ],
+ [ "- ++a + + b--", "-++a+ +b--" ],
+ [ "- ++a + + b++", "-++a+ +b++" ],
+ [ "- ++a + - ++b", "-++a+-++b" ],
+ [ "- ++a + - --b", "-++a+- --b" ],
+ [ "- ++a + - b", "-++a+-b" ],
+ [ "- ++a + - b--", "-++a+-b--" ],
+ [ "- ++a + - b++", "-++a+-b++" ],
+ [ "- ++a - ++b", "-++a-++b" ],
+ [ "- ++a - --b", "-++a- --b" ],
+ [ "- ++a - b", "-++a-b" ],
+ [ "- ++a - b--", "-++a-b--" ],
+ [ "- ++a - b++", "-++a-b++" ],
+ [ "- ++a - + ++b", "-++a-+ ++b" ],
+ [ "- ++a - + --b", "-++a-+--b" ],
+ [ "- ++a - + b", "-++a-+b" ],
+ [ "- ++a - + b--", "-++a-+b--" ],
+ [ "- ++a - + b++", "-++a-+b++" ],
+ [ "- ++a - - ++b", "-++a- -++b" ],
+ [ "- ++a - - --b", "-++a- - --b" ],
+ [ "- ++a - - b", "-++a- -b" ],
+ [ "- ++a - - b--", "-++a- -b--" ],
+ [ "- ++a - - b++", "-++a- -b++" ],
+ [ "- --a + ++b", "- --a+ ++b" ],
+ [ "- --a + --b", "- --a+--b" ],
+ [ "- --a + b", "- --a+b" ],
+ [ "- --a + b--", "- --a+b--" ],
+ [ "- --a + b++", "- --a+b++" ],
+ [ "- --a + + ++b", "- --a+ + ++b" ],
+ [ "- --a + + --b", "- --a+ +--b" ],
+ [ "- --a + + b", "- --a+ +b" ],
+ [ "- --a + + b--", "- --a+ +b--" ],
+ [ "- --a + + b++", "- --a+ +b++" ],
+ [ "- --a + - ++b", "- --a+-++b" ],
+ [ "- --a + - --b", "- --a+- --b" ],
+ [ "- --a + - b", "- --a+-b" ],
+ [ "- --a + - b--", "- --a+-b--" ],
+ [ "- --a + - b++", "- --a+-b++" ],
+ [ "- --a - ++b", "- --a-++b" ],
+ [ "- --a - --b", "- --a- --b" ],
+ [ "- --a - b", "- --a-b" ],
+ [ "- --a - b--", "- --a-b--" ],
+ [ "- --a - b++", "- --a-b++" ],
+ [ "- --a - + ++b", "- --a-+ ++b" ],
+ [ "- --a - + --b", "- --a-+--b" ],
+ [ "- --a - + b", "- --a-+b" ],
+ [ "- --a - + b--", "- --a-+b--" ],
+ [ "- --a - + b++", "- --a-+b++" ],
+ [ "- --a - - ++b", "- --a- -++b" ],
+ [ "- --a - - --b", "- --a- - --b" ],
+ [ "- --a - - b", "- --a- -b" ],
+ [ "- --a - - b--", "- --a- -b--" ],
+ [ "- --a - - b++", "- --a- -b++" ],
+ [ "- a + ++b", "-a+ ++b" ],
+ [ "- a + --b", "-a+--b" ],
+ [ "- a + b", "-a+b" ],
+ [ "- a + b--", "-a+b--" ],
+ [ "- a + b++", "-a+b++" ],
+ [ "- a + + ++b", "-a+ + ++b" ],
+ [ "- a + + --b", "-a+ +--b" ],
+ [ "- a + + b", "-a+ +b" ],
+ [ "- a + + b--", "-a+ +b--" ],
+ [ "- a + + b++", "-a+ +b++" ],
+ [ "- a + - ++b", "-a+-++b" ],
+ [ "- a + - --b", "-a+- --b" ],
+ [ "- a + - b", "-a+-b" ],
+ [ "- a + - b--", "-a+-b--" ],
+ [ "- a + - b++", "-a+-b++" ],
+ [ "- a - ++b", "-a-++b" ],
+ [ "- a - --b", "-a- --b" ],
+ [ "- a - b", "-a-b" ],
+ [ "- a - b--", "-a-b--" ],
+ [ "- a - b++", "-a-b++" ],
+ [ "- a - + ++b", "-a-+ ++b" ],
+ [ "- a - + --b", "-a-+--b" ],
+ [ "- a - + b", "-a-+b" ],
+ [ "- a - + b--", "-a-+b--" ],
+ [ "- a - + b++", "-a-+b++" ],
+ [ "- a - - ++b", "-a- -++b" ],
+ [ "- a - - --b", "-a- - --b" ],
+ [ "- a - - b", "-a- -b" ],
+ [ "- a - - b--", "-a- -b--" ],
+ [ "- a - - b++", "-a- -b++" ],
+ [ "- a-- + ++b", "-a--+ ++b" ],
+ [ "- a-- + --b", "-a--+--b" ],
+ [ "- a-- + b", "-a--+b" ],
+ [ "- a-- + b--", "-a--+b--" ],
+ [ "- a-- + b++", "-a--+b++" ],
+ [ "- a-- + + ++b", "-a--+ + ++b" ],
+ [ "- a-- + + --b", "-a--+ +--b" ],
+ [ "- a-- + + b", "-a--+ +b" ],
+ [ "- a-- + + b--", "-a--+ +b--" ],
+ [ "- a-- + + b++", "-a--+ +b++" ],
+ [ "- a-- + - ++b", "-a--+-++b" ],
+ [ "- a-- + - --b", "-a--+- --b" ],
+ [ "- a-- + - b", "-a--+-b" ],
+ [ "- a-- + - b--", "-a--+-b--" ],
+ [ "- a-- + - b++", "-a--+-b++" ],
+ [ "- a-- - ++b", "-a---++b" ],
+ [ "- a-- - --b", "-a--- --b" ],
+ [ "- a-- - b", "-a---b" ],
+ [ "- a-- - b--", "-a---b--" ],
+ [ "- a-- - b++", "-a---b++" ],
+ [ "- a-- - + ++b", "-a---+ ++b" ],
+ [ "- a-- - + --b", "-a---+--b" ],
+ [ "- a-- - + b", "-a---+b" ],
+ [ "- a-- - + b--", "-a---+b--" ],
+ [ "- a-- - + b++", "-a---+b++" ],
+ [ "- a-- - - ++b", "-a--- -++b" ],
+ [ "- a-- - - --b", "-a--- - --b" ],
+ [ "- a-- - - b", "-a--- -b" ],
+ [ "- a-- - - b--", "-a--- -b--" ],
+ [ "- a-- - - b++", "-a--- -b++" ],
+ [ "- a++ + ++b", "-a+++ ++b" ],
+ [ "- a++ + --b", "-a+++--b" ],
+ [ "- a++ + b", "-a+++b" ],
+ [ "- a++ + b--", "-a+++b--" ],
+ [ "- a++ + b++", "-a+++b++" ],
+ [ "- a++ + + ++b", "-a+++ + ++b" ],
+ [ "- a++ + + --b", "-a+++ +--b" ],
+ [ "- a++ + + b", "-a+++ +b" ],
+ [ "- a++ + + b--", "-a+++ +b--" ],
+ [ "- a++ + + b++", "-a+++ +b++" ],
+ [ "- a++ + - ++b", "-a+++-++b" ],
+ [ "- a++ + - --b", "-a+++- --b" ],
+ [ "- a++ + - b", "-a+++-b" ],
+ [ "- a++ + - b--", "-a+++-b--" ],
+ [ "- a++ + - b++", "-a+++-b++" ],
+ [ "- a++ - ++b", "-a++-++b" ],
+ [ "- a++ - --b", "-a++- --b" ],
+ [ "- a++ - b", "-a++-b" ],
+ [ "- a++ - b--", "-a++-b--" ],
+ [ "- a++ - b++", "-a++-b++" ],
+ [ "- a++ - + ++b", "-a++-+ ++b" ],
+ [ "- a++ - + --b", "-a++-+--b" ],
+ [ "- a++ - + b", "-a++-+b" ],
+ [ "- a++ - + b--", "-a++-+b--" ],
+ [ "- a++ - + b++", "-a++-+b++" ],
+ [ "- a++ - - ++b", "-a++- -++b" ],
+ [ "- a++ - - --b", "-a++- - --b" ],
+ [ "- a++ - - b", "-a++- -b" ],
+ [ "- a++ - - b--", "-a++- -b--" ],
+ [ "- a++ - - b++", "-a++- -b++" ],
+ ].forEach(function(exp) {
+ assert.strictEqual(UglifyJS.parse(exp[0]).print_to_string(), exp[1] + ";");
+ });
+ });
+});