Exemplo n.º 1
0
        public void TestWriteOverlappingCycles()
        {
            const string cycleMarkerPrefix = "X";

            var          gc    = new GlobalContext();
            WorkingGraph graph = gc.CurrentGraph;

            var a = graph.CreateItem(ItemType.SIMPLE, "a");
            var b = graph.CreateItem(ItemType.SIMPLE, "b");
            var c = graph.CreateItem(ItemType.SIMPLE, "c");
            var d = graph.CreateItem(ItemType.SIMPLE, "d");
            var e = graph.CreateItem(ItemType.SIMPLE, "e");

            List <Dependency> dependencies = CreateDependenciesAndFindCycles(gc, a, b, c, d, e, keepOnlyCyclesOption: false, markerPrefix: cycleMarkerPrefix);

            using (var s = new MemoryStream()) {
                var w = new FlatPathWriter();
                w.RenderToStreamForUnitTests(gc, dependencies, s, cycleMarkerPrefix + "* -sm");
                string result = Encoding.ASCII.GetString(s.ToArray());
                Assert.AreEqual(@"-- X0
SIMPLE:a'X0
SIMPLE:c'X1
SIMPLE:d
SIMPLE:e
<= SIMPLE:a'X0 $

-- X1
SIMPLE:c'X1
SIMPLE:d
<= SIMPLE:c'X1 $", result.Trim());
            }
        }
        public void TestSimpleFlatPathWriterForOnePath()
        {
            var gc = new GlobalContext {
                IgnoreCase = true
            };
            WorkingGraph graph = gc.CurrentGraph;

            ItemType t3 = ItemType.New("T3(ShortName:MiddleName:LongName)");
            var      RegexPathMarker = "P0";

            Item a = graph.CreateItem(t3, "a:aa:aaa".Split(':'));

            a.MarkPathElement(RegexPathMarker, 0, isStart: false, isEnd: false, isMatchedByCountSymbol: false,
                              isLoopBack: false);
            Item b = graph.CreateItem(t3, "b:bb:bbb".Split(':'));

            b.SetMarker(RegexPathMarker, 1);

            var d = CreateDependency(graph, a, b, RegexPathMarker, true, true, false, false);

            Dependency[] dependencies = { d };

            using (var s = new MemoryStream()) {
                var w = new FlatPathWriter();
                w.RenderToStreamForUnitTests(gc, dependencies, s, "P*");
                string result = Encoding.ASCII.GetString(s.ToArray());
                Assert.AreEqual(@"-- P0
a:aa:aaa
b:bb:bbb $", result.Trim());
            }
        }
Exemplo n.º 3
0
        private static string FindPathsAndWriteFlat(GlobalContext gc, IEnumerable<Dependency> dependencies, string markerPrefix, string transformOptions) {
            var pm = new OLDPathMarker();
            pm.Configure(gc, "", false);
            var transformedDependencies = new List<Dependency>();
            pm.Transform(gc, dependencies, transformOptions, transformedDependencies, s => null);

            string result;
            using (var s = new MemoryStream()) {
                var w = new FlatPathWriter();
                w.RenderToStreamForUnitTests(gc, transformedDependencies, s, $"{markerPrefix}* -sm");
                result = Encoding.ASCII.GetString(s.ToArray());
            }
            return result;
        }
Exemplo n.º 4
0
        public void TestWriteLaterCycle()
        {
            const string      cycleMarkerPrefix = "C";
            List <Dependency> dependencies      = FindLaterCycle(cycleMarkerPrefix);
            var gc = new GlobalContext();

            using (var s = new MemoryStream()) {
                var w = new FlatPathWriter();
                w.RenderToStreamForUnitTests(gc, dependencies, s, cycleMarkerPrefix + "* -sm");
                string result = Encoding.ASCII.GetString(s.ToArray());
                Assert.AreEqual(@"-- C0
SIMPLE:c'C0
SIMPLE:d
SIMPLE:e
<= SIMPLE:c'C0 $", result.Trim());
            }
        }
Exemplo n.º 5
0
        public void TestBackProjectSmallCycle()
        {
            ItemType     generic2 = ItemType.Generic(2, ignoreCase: false);
            var          gc       = new GlobalContext();
            WorkingGraph graph    = gc.CurrentGraph;

            Item a1 = graph.CreateItem(generic2, "a:1");
            Item b1 = graph.CreateItem(generic2, "b:1");
            Item a2 = graph.CreateItem(generic2, "a:2");
            Item b2 = graph.CreateItem(generic2, "b:2");
            Item b3 = graph.CreateItem(generic2, "b:3");

            var deps = new[] {
                Dep(graph, a1, b1), Dep(graph, b1, a2), Dep(graph, b2, a2), Dep(graph, a1, b3)
            };

            List <Dependency> backProjectedDeps = ProjectMarkCyclesAndBackProject(deps, gc);

            Assert.IsTrue(Find(backProjectedDeps, a1, b1).MarkersContain("C0"));
            Assert.IsTrue(Find(backProjectedDeps, a1, b3).MarkersContain("C0"));
            Assert.IsTrue(Find(backProjectedDeps, b1, a2).MarkersContain("C0"));
            Assert.IsTrue(Find(backProjectedDeps, b2, a2).MarkersContain("C0"));

            var pw = new FlatPathWriter();

            using (var t = DisposingFile.CreateTempFileWithTail(".txt")) {
                pw.Render(gc, backProjectedDeps, $"{{ {FlatPathWriter.PathMarkerOption} C* }}".Replace(" ", Environment.NewLine),
                          new WriteTarget(t.FileName, append: false, limitLinesForConsole: 100), ignoreCase: false);

                using (var sr = new StreamReader(t.FileName)) {
                    var o = sr.ReadToEnd();

                    //Console.WriteLine(o);
                    Assert.IsTrue(o.Contains("a:1"));
                    Assert.IsTrue(o.Contains("<= a:2 $"));
                }
            }
        }