Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        public void TestTopologicalEqualsIdentity(int nodes, int degree)
        {
            var root = CreateRandomConnectedGraph(nodes * SizeMultiplier, degree);

            Assert.IsTrue(GraphComparer.CheckTopologicallyEquals(root, root, Log));
        }