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