diff --git a/test/functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts b/test/functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts index 27ee74b2..b2843e19 100644 --- a/test/functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts +++ b/test/functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts @@ -146,21 +146,42 @@ describe('JavaScriptObfuscator', () => { assert.match(obfuscatedCode2, pattern2); }); - it('should returns same code every time with same `seed`', () => { + it.only('should returns same code every time with same `seed`', function () { + this.timeout(15000); + const code: string = readFileAsString('./test/fixtures/sample.js'); - const seed: number = 12345; + const samples: number = 100; - const obfuscationResult1: IObfuscationResult = JavaScriptObfuscator.obfuscate( - code, { seed: seed } - ); + let seed: number = 12345, + equalsCount: number = 0; + + //initial clear before testing RandomGeneratorUtils.randomVariableNameSet.clear(); - const obfuscationResult2: IObfuscationResult = JavaScriptObfuscator.obfuscate( - code, { seed: seed } - ); + for (let i: number = 0; i < samples; i++) { + if (i % 20 === 0) { + seed++; + } + + const obfuscationResult1: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, { seed: seed } + ); + RandomGeneratorUtils.randomVariableNameSet.clear(); + + const obfuscationResult2: IObfuscationResult = JavaScriptObfuscator.obfuscate( + code, { seed: seed } + ); + RandomGeneratorUtils.randomVariableNameSet.clear(); + + if (obfuscationResult1.getObfuscatedCode() === obfuscationResult2.getObfuscatedCode()) { + equalsCount++; + } + } + + //clear after testing RandomGeneratorUtils.randomVariableNameSet.clear(); - assert.equal(obfuscationResult1.getObfuscatedCode(), obfuscationResult2.getObfuscatedCode()); + assert.equal(equalsCount, samples); }); it('should returns different code with different `seed` option value', () => {