// Recipe 1 = Matched // recipes-and-patterns.js under IndexOf // RecipesAndPatternsMatch // ($('dcp.SP101/csv/Index', 0) + 1) == $('dcp.SP101/csv/Count', 0) // getValue('TENCOR', $('dcp.SP101/csv/Count', 0), $('dcp.SP101/csv/Session', ''), 'pattern', getContextData('2', 'cds.NULL_DATA', '')); function getValue(tool, patternSize, recipe, pattern, json) { let result; if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0) result = 'A) Invalid input!'; else { let parsed; try { parsed = JSON.parse(json); } catch (error) { parsed = null; } if (parsed == null) result = 'B) Invalid input!'; else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined) result = 'C) No Spec!'; else { let toolMatches = []; for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) { if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) { toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]); } } if (toolMatches == null || toolMatches.length === 0) result = 'Tool [' + tool + '] not found in OI API results!'; else { let debug = ''; let matches = 0; for (let index = 0; index < toolMatches.length; index++) { debug += 'patternSize: ' + toolMatches[index].patternSize + '; recipe: ' + toolMatches[index].recipe + '; pattern: ' + toolMatches[index].pattern + ';~'; if (toolMatches[index].recipe.localeCompare(recipe, ['en-US'], { sensitivity: 'base' }) === 0) { matches++; } } if (matches > 0) result = '1'; else result = 'Value not matched~Run~patternSize: ' + patternSize + '; recipe: ' + recipe + '; pattern: ' + pattern + ';~API~' + debug; } } } return result; } getValue('TENCOR', 0, 'AS_IFX100_ROTR', 'pattern', '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}'); let json; let tool; let recipe; let pattern; let patternSize; tool = 'TENCOR' patternSize = 9; recipe = 'lr8in.SET'; pattern = '4_108IN.PAT'; json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}'; const testA = getValue(tool, patternSize, recipe, pattern, json); if (testA !== '1') throw 'Test A failed: ' + testA; tool = null; const testB = getValue(tool, patternSize, recipe, pattern, json); if (testB !== 'A) Invalid input!') throw 'Test L failed: ' + testB; tool = ''; const testC = getValue(tool, patternSize, recipe, pattern, json); if (testC !== 'A) Invalid input!') throw 'Test M failed: ' + testC; patternSize = null; const testD = getValue(tool, patternSize, recipe, pattern, json); if (testD !== 'A) Invalid input!') throw 'Test J failed: ' + testD; patternSize = ''; const testE = getValue(tool, patternSize, recipe, pattern, json); if (testE !== 'A) Invalid input!') throw 'Test K failed: ' + testE; recipe = null; const testF = getValue(tool, patternSize, recipe, pattern, json); if (testF !== 'A) Invalid input!') throw 'Test F failed: ' + testF; recipe = ''; const testG = getValue(tool, patternSize, recipe, pattern, json); if (testG !== 'A) Invalid input!') throw 'Test G failed: ' + testG; pattern = null; const testH = getValue(tool, patternSize, recipe, pattern, json); if (testH !== 'A) Invalid input!') throw 'Test H failed: ' + testH; pattern = ''; const testI = getValue(tool, patternSize, recipe, pattern, json); if (testI !== 'A) Invalid input!') throw 'Test I failed: ' + testI; json = ''; const testK = getValue(tool, patternSize, recipe, pattern, json); if (testK !== 'A) Invalid input!') throw 'Test B failed: ' + testK; json = 'invalid'; const testL = getValue(tool, patternSize, recipe, pattern, json); if (testL !== 'B) Invalid input!') throw 'Test C failed: ' + testL; json = '{"rds":{}}'; const testM = getValue(tool, patternSize, recipe, pattern, json); if (testM !== 'C) No Spec!') throw 'Test D failed: ' + testM; json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}'; const testN = getValue(tool, patternSize, recipe, pattern, json); if (testN !== 'Tool [TENCOR] not found in OI API results!') throw 'Test E failed: ' + testN;