Jelajahi Sumber

Added more tests for emoji support of `splitStrings` option

sanex 4 tahun lalu
induk
melakukan
c46f31d665

+ 3 - 2
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();
 

+ 66 - 26
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-1.js');
+
+                obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                    code,
+                    {
+                        ...NO_ADDITIONAL_NODES_PRESET,
+                        splitStrings: true,
+                        splitStringsChunkLength: 1
+                    }
+                ).getObfuscatedCode();
+
+                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);
+            });
+        });
 
-            const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js');
+        describe('Variant #2: multiple emoji', () => {
+            it('should correctly split string with emoji', () => {
+                const regExp: RegExp = /^'a' *\+ *'b' *\+ *'\ud83d' *\+ *'\ude34' *\+ *'\ud83d' *\+ *'\ude04' *\+ *'c' *\+ *'d';$/;
 
-            obfuscatedCode = JavaScriptObfuscator.obfuscate(
-                code,
-                {
-                    ...NO_ADDITIONAL_NODES_PRESET,
-                    splitStrings: true,
-                    splitStringsChunkLength: 1
-                }
-            ).getObfuscatedCode();
+                const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji-2.js');
 
-            assert.match(obfuscatedCode,  regExp);
-        });
+                obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                    code,
+                    {
+                        ...NO_ADDITIONAL_NODES_PRESET,
+                        splitStrings: true,
+                        splitStringsChunkLength: 1
+                    }
+                ).getObfuscatedCode();
 
-        it('should correctly evaluate splitted string with emoji', () => {
-            const expectedResultString: string = 'ab😴😄cd';
+                assert.match(obfuscatedCode,  regExp);
+            });
 
-            const code: string = readFileAsString(__dirname + '/fixtures/string-with-emoji.js');
+            it('should correctly evaluate splitted string with emoji', () => {
+                const expectedResultString: string = 'ab😴😄cd';
 
-            obfuscatedCode = JavaScriptObfuscator.obfuscate(
-                code,
-                {
-                    ...NO_ADDITIONAL_NODES_PRESET,
-                    splitStrings: true,
-                    splitStringsChunkLength: 1
-                }
-            ).getObfuscatedCode();
+                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);
+                const resultString: string = eval(obfuscatedCode);
 
-            assert.equal(resultString, expectedResultString);
+                assert.equal(resultString, expectedResultString);
+            });
         });
     });
 

+ 1 - 0
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-1.js

@@ -0,0 +1 @@
+'ab👋🏼cd';

+ 0 - 0
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji.js → test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/string-with-emoji-2.js