// Recipe 1 = Matched // recipes-and-patterns.js under IndexOf // RecipesAndPatternsMatch // ($('dcp.BIORAD2/csv/Index', 0) + 1) == $('dcp.BIORAD2/csv/Count', 0) // getValue('FTIR', $('dcp.BIORAD2/csv/Count', 0), $('dcp.BIORAD2/csv/Recipe', ''), 'pattern', getContextData('2', 'cds.NULL_DATA', '')); function getValue(tool, patternSize, recipe, pattern, json) { let result; if (recipe.toUpperCase() === 'T-LOW') result = '1'; else if (recipe.toUpperCase() === 'T-MID') result = '1'; else if (recipe.toUpperCase() === 'T-HIGH') result = '1'; else if (recipe.toUpperCase() === 'T_LOW') result = '1'; else if (recipe.toUpperCase() === 'T_MID') result = '1'; else if (recipe.toUpperCase() === 'T_HIGH') result = '1'; else { 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.toLowerCase() == recipe.toLowerCase()) { matches++; } } if (matches > 0) result = '1'; else result = 'Value not matched~Run~patternSize: ' + patternSize + ';~recipe: ' + recipe + ';~pattern: ' + pattern + ';~API~' + debug; } } } } return result; } getValue('FTIR', 5, 'Thin8inch', 'pattern', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"thin8inch","pattern":"6INCH6MM","patternSize":5,"tool":"FTIR"}]}}}'); let json; let tool; let recipe; let pattern; let patternSize; tool = 'FTIR' patternSize = 5; recipe = 'IRC6in_6mm'; pattern = 'pattern'; json = '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"IRC6in_6mm","pattern":"6INCH6MM","patternSize":5,"tool":"FTIR"}]}}}'; 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 [FTIR] not found in OI API results!') throw 'Test E failed: ' + testN; const testO = getValue('FTIR', 14, 'Thin8inch', 'pattern', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"thin8inch","pattern":"6INCH6MM","patternSize":5,"tool":"FTIR"}]}}}'); if (testO.indexOf('Value not matched~Run~patternSize: 14; recipe: Thin8inch; pattern: pattern;~API~patternSize: 5; recipe: thin8inch; pattern: 6INCH6MM;~') !== 0) throw 'Test P failed: ' + testO;