|
@@ -164,40 +164,80 @@ describe('SplitStringTransformer', () => {
|
|
});
|
|
});
|
|
|
|
|
|
describe('Variant #10: string with emoji', () => {
|
|
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);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|