// Recipe 1 = Matched // recipes-and-patterns.js under IndexOf // RecipesAndPatternsMatch // ($('dcp.HGCV1/csv/Index', 0) + 1) == $('dcp.HGCV1/csv/Count', 0) // getValue('HGCV', $('dcp.HGCV1/csv/Count', 0), $('dcp.HGCV1/csv/SetupFile', ''), $('dcp.HGCV1/csv/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].patternSize == patternSize && toolMatches[index].recipe.localeCompare(recipe, ['en-US'], { sensitivity: 'base' }) === 0 && toolMatches[index].pattern.localeCompare(pattern, ['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('HGCV', 9, '6IN4_10.SET', '6_9PLUS.PAT', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}'); let json; let tool; let recipe; let pattern; let patternSize; tool = 'HGCV' patternSize = 9; recipe = '6IN4_10.SET'; pattern = '6_9PLUS.PAT'; json = '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}'; 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 [HGCV] not found in OI API results!') throw 'Test E failed: ' + testN;