@rohitbakoliya/test-gen
Version:
Quickly generate test cases for stress testing using interactive CLI.
48 lines (47 loc) • 1.65 kB
JavaScript
;
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;