mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Fixed zero threshold case for string array storage analyze
This commit is contained in:
@@ -138,6 +138,7 @@ export class StringArrayStorageAnalyzer implements IStringArrayStorageAnalyzer {
|
||||
}
|
||||
|
||||
return literalNode.value.length >= StringArrayStorageAnalyzer.minimumLengthForStringArray
|
||||
&& !!this.options.stringArrayThreshold
|
||||
&& this.randomGenerator.getMathRandom() <= this.options.stringArrayThreshold;
|
||||
}
|
||||
}
|
||||
|
||||
+29
-23
@@ -388,38 +388,44 @@ describe('StringArrayStorageAnalyzer', () => {
|
||||
});
|
||||
|
||||
describe('Analyzes of the AST tree with string array threshold', () => {
|
||||
describe('Threshold value: 0', () => {
|
||||
describe('Threshold value: 0', function () {
|
||||
this.timeout(30000);
|
||||
const samplesCount: number = 10000;
|
||||
|
||||
const literalNode1: ESTree.Literal = NodeFactory.literalNode('foo');
|
||||
const literalNode2: ESTree.Literal = NodeFactory.literalNode('bar');
|
||||
|
||||
const expectedStringArrayStorageItemData1: undefined = undefined;
|
||||
const expectedStringArrayStorageItemData2: undefined = undefined;
|
||||
|
||||
let stringArrayStorageItemData1: IStringArrayStorageItemData | undefined;
|
||||
let stringArrayStorageItemData2: IStringArrayStorageItemData | undefined;
|
||||
let isStringArrayStorageItemDataEmpty: boolean = false;
|
||||
|
||||
before(() => {
|
||||
stringArrayStorageAnalyzer = getStringArrayStorageAnalyzer({
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 0
|
||||
});
|
||||
for (let i = 0; i < samplesCount; i++) {
|
||||
stringArrayStorageAnalyzer = getStringArrayStorageAnalyzer({
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 0
|
||||
});
|
||||
|
||||
const astTree: ESTree.Program = NodeFactory.programNode([
|
||||
NodeFactory.expressionStatementNode(literalNode1),
|
||||
NodeFactory.expressionStatementNode(literalNode2)
|
||||
]);
|
||||
const astTree: ESTree.Program = NodeFactory.programNode([
|
||||
NodeFactory.expressionStatementNode(literalNode1),
|
||||
NodeFactory.expressionStatementNode(literalNode2)
|
||||
]);
|
||||
|
||||
stringArrayStorageAnalyzer.analyze(astTree);
|
||||
stringArrayStorageItemData1 = stringArrayStorageAnalyzer.getItemDataForLiteralNode(literalNode1);
|
||||
stringArrayStorageItemData2 = stringArrayStorageAnalyzer.getItemDataForLiteralNode(literalNode2);
|
||||
stringArrayStorageAnalyzer.analyze(astTree);
|
||||
|
||||
const stringArrayStorageItemData1: IStringArrayStorageItemData | undefined =
|
||||
stringArrayStorageAnalyzer.getItemDataForLiteralNode(literalNode1);
|
||||
const stringArrayStorageItemData2: IStringArrayStorageItemData | undefined =
|
||||
stringArrayStorageAnalyzer.getItemDataForLiteralNode(literalNode2);
|
||||
|
||||
isStringArrayStorageItemDataEmpty = !stringArrayStorageItemData1 && !stringArrayStorageItemData2;
|
||||
|
||||
if (!isStringArrayStorageItemDataEmpty) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('Variant #1: should return correct string array storage item data for literal node #1', () => {
|
||||
assert.deepEqual(stringArrayStorageItemData1, expectedStringArrayStorageItemData1);
|
||||
});
|
||||
|
||||
it('Variant #2: should return correct string array storage item data for literal node #2', () => {
|
||||
assert.deepEqual(stringArrayStorageItemData2, expectedStringArrayStorageItemData2);
|
||||
it('Variant #1: should return empty string array storage item data for literal nodes', () => {
|
||||
assert.equal(isStringArrayStorageItemDataEmpty, true);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user