private static void Main(string[] args) { RenderLicense(); Graph<Node> g = GraphGenerator.GetGraph(Shape.Large).Map(v => new Node { Label = v, Filled = false }); Graph<Node> d = g.GetDominatingSet(); RenderGraph(g); RenderGraph(g.Map(n => new Node { Color = n.Color, Label = n.Label, Filled = d.Vertices.Contains(n) })); g = new Graph<Node>(); Random r = new Random(); var nodes = Enumerable.Range(0, r.Next(26)).ToDictionary(_ => _, _ => new Node {Label = ('A' + _).ToString(), Filled = false}); foreach (var n in nodes.Values) { g.Add(n); } for (int i = 0; i < nodes.Count; i++) { for (int j = i + 1; j < nodes.Count; j++) { if (r.NextDouble() < 0.16) { g.Add(new Edge<Node>(nodes[i], nodes[j])); } } } RenderGraph(g); d = g.GetDominatingSet(); RenderGraph(g.Map(n => new Node { Color = n.Color, Label = n.Label, Filled = d.Vertices.Contains(n) })); }
public void Graph_Map() { Graph<TypeA> g = new Graph<TypeA>(); var a = new TypeA { Label = "A" }; var b = new TypeA { Label = "B" }; var c = new TypeA { Label = "C" }; var edge = new Edge<TypeA>(b, c); g.Add(a); g.Add(b); g.Add(c); g.Add(edge); Func<TypeA, TypeB> map = _ => new TypeB {Label = _.Label}; Graph<TypeB> h = g.Map(map); Assert.IsTrue(g.Vertices.All(v => h.Vertices.Any(w => w.Label == v.Label))); Assert.IsFalse(g.Vertices.Any(v => h.Vertices.All(w => w.Label != v.Label))); }