public void TestTopologicalEqualsClone(int nodes, int degree) { var root = CreateRandomConnectedGraph(nodes * SizeMultiplier, degree); var clone = root.Clone(root.GetName() + "clone"); Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(root, clone, Log)); }
public void TestTopologicalEqualsCloneWithSubgraphs(int nodes, int degree) { var root = CreateRandomConnectedGraph(nodes * SizeMultiplier, degree); var nodeSelection = new HashSet <Node>(root.Nodes().Take(nodes / 2)); var sub = root.AddSubgraphFromNodes("sub", nodeSelection); var subNodeCount = sub.Nodes().Count(); var nodeSelection2 = new HashSet <Node>(sub.Nodes().Take(subNodeCount / 2)); var sub2 = root.AddSubgraphFromNodes("sub2", nodeSelection2); var edgeCount = sub2.Edges().Count(); var edgeSelection = new HashSet <Edge>(sub.Edges().Take(edgeCount / 2)); var sub3 = root.AddSubgraphFromEdgeSet("sub3", edgeSelection); RootGraph subclone = sub.Clone("subclone"); Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(sub, subclone, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub, root, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub, sub2, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub, sub3, Log)); RootGraph sub2clone = sub2.Clone("sub2clone"); Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(sub2, sub2clone, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub2, root, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub2, sub, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub2, sub3, Log)); RootGraph sub3clone = sub3.Clone("sub3clone"); Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(sub3, sub3clone, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub3, root, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub3, sub, Log)); Assert.IsFalse(GraphComparer.CheckTopologicallyEquals(sub3, sub2, Log)); }
public SettingsChangesAuditInfo GetAudit(SettingsRoot old, SettingsRoot changed) { var diff = new GraphComparer(GetDisplayString).Compare(old, changed); if (diff.IsMatch) { return(null); } var diffStr = JsonConvert.SerializeObject( diff.Deltas.GroupBy(d => FormatBreadcrump(d.Breadcrumb)) .Select(GetChangeDescriptor) .Where(d => d.Key != null) .ToDictionary(), JsonSerializerSettings); var httpContext = _httpContextAccessor.HttpContext; return(new SettingsChangesAuditInfo(_system.UtcNow, httpContext?.Connection.RemoteIpAddress, httpContext?.Request.Headers["User-Info"].ToDelimitedString(", "), $"{httpContext?.Request.Method} {httpContext?.Request.Path}", diffStr)); }
public void TestTopologicalEqualsIdentity(int nodes, int degree) { var root = CreateRandomConnectedGraph(nodes * SizeMultiplier, degree); Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(root, root, Log)); }