UNPKG

surku

Version:

A mutation-based general purpose fuzzer.

64 lines (53 loc) 2.07 kB
const Surku = require("../Surku.js"); function verifySeed(input, seed, verbose) { let rounds = 10; const outputBuffer = []; let failed = false; while (rounds--) { const selfTest = new Surku({ seed, verbose }); if (input === "string") outputBuffer.push(selfTest.generateTestCase(testString)); else outputBuffer.push(selfTest.generateTestCase(Buffer.from(testString))); } for (let x = 0; x < 9; x++) { if (outputBuffer[x].toString() !== outputBuffer[1].toString()) { console.log(`Test failed.\n${outputBuffer[x]}!=${outputBuffer[x + 1]}`); failed = true; break; } } if (!failed) { console.error("Test passed. All 10 outputs were identical."); console.error(`Output length: ${outputBuffer[0].length}`); console.log(`Output:\n${outputBuffer[0]}\n`); } } let testString; if (process.argv[2]) testString = process.argv[2]; else testString = "Surku on Tove Janssonin Muumi-teoksissa esiintyvä pieni ja alakuloinen koira.\nSe esiintyy vuonna 1958 ilmestyneessä Taikatalvi-kirjassa."; let seed = Math.floor(Math.random() * 10000); const selfTest = new Surku(); console.error( "Initializing new Surku with default config.\nEnabling Surku verbose. (level 0)" ); selfTest.config.verbose = 0; if (process.argv.indexOf("--debug") !== -1) { selfTest.config.verbose = 5; } console.error(selfTest.config); selfTest.config.seed = seed; console.log(`\n\nRunning with input-data: \n"${testString}"\n`); console.error(`Input-data length: ${testString.length}\n`); console.error(`Running 10 times with seed ${seed}`); verifySeed("string", seed, selfTest.config.verbose); seed = Math.floor(Math.random() * 10000); console.error(`Changing seed to ${seed}`); selfTest.config.seed = seed; verifySeed("string", seed, selfTest.config.verbose); selfTest.config.seed = undefined; console.error("Running with random seed"); console.log(`Output: \n${selfTest.generateTestCase(testString)}\n`); console.error("Running with random seed"); console.log(`Output: \n${selfTest.generateTestCase(testString)}\n`);