diff --git a/test/dev/dev.ts b/test/dev/dev.ts index f186c5e1..cf7d31c7 100644 --- a/test/dev/dev.ts +++ b/test/dev/dev.ts @@ -7,7 +7,7 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo let obfuscatedCode: string = JavaScriptObfuscator.obfuscate( ` - var string1 = 'ab😴😄cd'; + var string1 = '👋🏼'; console.log(string1); `, @@ -17,7 +17,8 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo stringArray: true, stringArrayThreshold: 1, splitStrings: true, - splitStringsChunkLength: 1 + splitStringsChunkLength: 1, + unicodeEscapeSequence: true } ).getObfuscatedCode(); diff --git a/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts index c60e0241..0aded50f 100644 --- a/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts +++ b/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts @@ -164,40 +164,80 @@ describe('SplitStringTransformer', () => { }); describe('Variant #10: string with emoji', () => { - it('should correctly split string with emoji', () => { - const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\ude34' *\+ *'\ud83d' *\+ *'\ude04' *\+ *'c' *\+ *'d';$/; + describe('Variant #1: single emoji', () => { + it('should correctly split string with emoji', () => { + const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\udc4b' *\+ *'\ud83c' *\+ *'\udffc' *\+ *'c' *\+ *'d';$/; - const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js'); + const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-1.js'); - obfuscatedCode = JavaScriptObfuscator.obfuscate( - code, - { - ...NO_ADDITIONAL_NODES_PRESET, - splitStrings: true, - splitStringsChunkLength: 1 - } - ).getObfuscatedCode(); + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + splitStrings: true, + splitStringsChunkLength: 1 + } + ).getObfuscatedCode(); - assert.match(obfuscatedCode, regExp); + assert.match(obfuscatedCode, regExp); + }); + + it('should correctly evaluate splitted string with emoji', () => { + const expectedResultString: string = 'ab👋🏼cd'; + + const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-1.js'); + + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + splitStrings: true, + splitStringsChunkLength: 1 + } + ).getObfuscatedCode(); + + const resultString: string = eval(obfuscatedCode); + + assert.equal(resultString, expectedResultString); + }); }); - it('should correctly evaluate splitted string with emoji', () => { - const expectedResultString: string = 'ab😴😄cd'; + describe('Variant #2: multiple emoji', () => { + it('should correctly split string with emoji', () => { + const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\ude34' *\+ *'\ud83d' *\+ *'\ude04' *\+ *'c' *\+ *'d';$/; - const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js'); + const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-2.js'); - obfuscatedCode = JavaScriptObfuscator.obfuscate( - code, - { - ...NO_ADDITIONAL_NODES_PRESET, - splitStrings: true, - splitStringsChunkLength: 1 - } - ).getObfuscatedCode(); + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + splitStrings: true, + splitStringsChunkLength: 1 + } + ).getObfuscatedCode(); - const resultString: string = eval(obfuscatedCode); + assert.match(obfuscatedCode, regExp); + }); - assert.equal(resultString, expectedResultString); + it('should correctly evaluate splitted string with emoji', () => { + const expectedResultString: string = 'ab😴😄cd'; + + const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-2.js'); + + obfuscatedCode = JavaScriptObfuscator.obfuscate( + code, + { + ...NO_ADDITIONAL_NODES_PRESET, + splitStrings: true, + splitStringsChunkLength: 1 + } + ).getObfuscatedCode(); + + const resultString: string = eval(obfuscatedCode); + + assert.equal(resultString, expectedResultString); + }); }); }); diff --git a/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-1.js b/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-1.js new file mode 100644 index 00000000..d29b9422 --- /dev/null +++ b/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-1.js @@ -0,0 +1 @@ +'ab👋🏼cd'; diff --git a/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji.js b/test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-2.js similarity index 100% rename from test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji.js rename to test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-2.js