UNPKG

@rohitbakoliya/test-gen

Version:

Quickly generate test cases for stress testing using interactive CLI.

48 lines (47 loc) 1.65 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 undirected unweighted Graph * @returns edge set */ const RndUndirectedUnWeighted = ({ 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 uug = new GraphUtil_1.default(nodes); const set = new Set(); // to find u, v pair 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}`) || set.has(`${v},${u}`) || u === v) { u = Random_1.default(range); v = Random_1.default(range); } uug.addEdge(u, v); set.add(`${u},${v}`); } uug.suffleEdges(); // creating output string for graphs let output = `${nodes} ${edges}\n`; uug.edges.forEach(function (edge) { output += edge.join(' ') + '\n'; }); return { result: uug.edges, nodes, edges, output, }; }; exports.default = RndUndirectedUnWeighted;