UNPKG

@rohitbakoliya/test-gen

Version:

Quickly generate test cases for stress testing using interactive CLI.

47 lines (46 loc) 1.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const GraphUtil_1 = __importDefault(require("../../helper/GraphUtil")); const Random_1 = __importDefault(require("../../helper/Random")); /** * Generates Random directed unweighted Graph * @returns edge set */ const RndDirectedUnweighted = ({ nodesRange, edgesRange }) => { const nodes = Random_1.default({ max: nodesRange[1], min: nodesRange[0] }); // max edges need to be fixed // i.e E = N * (N - 1) / 2 const edges = Random_1.default({ max: Math.min(edgesRange[1], (nodes * (nodes - 1)) / 2), min: edgesRange[0], }); const dug = new GraphUtil_1.default(nodes); const set = new Set(); const range = { min: 1, max: nodes }; for (let i = 0; i < edges; i++) { let u = Random_1.default(range); let v = Random_1.default(range); while (set.has(`${u},${v}`) || u === v) { u = Random_1.default(range); v = Random_1.default(range); } dug.addDirectedEdge(u, v); set.add(`${u},${v}`); } dug.suffleEdges(); // creating output string for graphs let output = `${nodes} ${edges}\n`; dug.edges.forEach(function (edge) { output += edge.join(' ') + '\n'; }); return { result: dug.edges, edges, nodes, output, }; }; exports.default = RndDirectedUnweighted;