BooleanLiteral (node) { const line = node.loc.start.line const lineContent = lines[line - 1] const mutantLineContent = lineContent.substr(0, node.loc.start.column) + !node.value + lineContent.substr(node.loc.end.column) const mutantId = ++mutodeInstance.mutants const diff = lineDiff(lineContent, mutantLineContent) const log = `MUTANT ${mutantId}:\tBLM Line ${line}:\t${diff}...` debug(log) mutodeInstance.mutantLog(`MUTANT ${mutantId}:\tBLM ${filePath} Line ${line}:\t\`${lineContent.trim()}\` > \`${mutantLineContent.trim()}'\``) const linesCopy = lines.slice() linesCopy[line - 1] = mutantLineContent const contentToWrite = linesCopy.join('\n') queue.push(mutantRunner({ mutodeInstance, filePath, contentToWrite, log })) }
NumericLiteral (node) { const line = node.loc.start.line const lineContent = lines[line - 1] const newValues = [] if (node.value !== 0) newValues.push(0) if (node.value !== 1) newValues.push(node.value - 1) newValues.push(node.value + 1) newValues.push(Math.floor(Math.random() * 1000000)) for (const newValue of newValues) { const mutantLineContent = lineContent.substr(0, node.loc.start.column) + newValue + lineContent.substr(node.loc.end.column) const mutantId = ++mutodeInstance.mutants const diff = lineDiff(lineContent, mutantLineContent) const log = `MUTANT ${mutantId}:\tNLM Line ${line}:\t${diff}...` debug(log) mutodeInstance.mutantLog(`MUTANT ${mutantId}:\tNLM ${filePath} Line ${line}:\t\`${lineContent.trim()}\` > \`${mutantLineContent.trim()}'\``) const linesCopy = lines.slice() linesCopy[line - 1] = mutantLineContent const contentToWrite = linesCopy.join('\n') queue.push(mutantRunner({ mutodeInstance, filePath, contentToWrite, log })) } }
if (node.value.length !== 0) { const mutantLineContent = lineContent.substr(0, node.loc.start.column) + node.extra.raw.replace(node.value, '') + lineContent.substr(node.loc.end.column) const newValue = `'${randomString(node.value.length || 10)}'` const mutantLineContent = lineContent.substr(0, node.loc.start.column) + newValue +