Example #1
0
        public void RemoveLibraries2()
        {
            var test = new ProgrammingSceneTest <TItem, TEdge> ();

            var sources = MeshTests(SceneTestEnvironment <TItem, TEdge>
                                    .Create <ProgrammingLanguageFactory <TItem, TEdge> > (3));

            test.Mock = sources.First() as SceneTestEnvironment <TItem, TEdge, ProgrammingLanguageFactory <TItem, TEdge> >;

            var source1 = test.Mock;
            var source2 = sources.Skip(1).First();

            source1.Expand(source1.Nodes[iProgramming], false);

            source2.SetFocused(source2.Nodes[iLibraries]);
            source2.CommandsPerform();

            source2.SceneFacade.Delete();
            source2.CommandsPerform();

            var librariesRemoved = new IVisual[] {
                source1.Nodes[iProgramming],
                source1.Nodes[iLanguage],
                source1.Edges[iProgrammingLanguage],
                source1.Nodes[iJava],
                source1.Nodes[iNet],
                source1.Nodes[iCollections],
                source1.Edges[iProgrammingLanguageJava],
                source1.Edges[iProgrammingLanguageNet],
            };

            source1.AreEquivalent(librariesRemoved, source1.Scene.Graph);
            source1.ProveShapes();
            source2.ProveShapes();
        }
Example #2
0
        public void EdgeAddChangeRemove()
        {
            var source = new SceneTestEnvironment <TItem, TEdge, ProgrammingLanguageFactory <TItem, TEdge> > ();

            EdgeAddChangeRemove(source, iProgramming, iNet, iJava);
            EdgeAddChangeRemove(source, iProgramming, iNet, iJava);
            EdgeAddChangeRemove(source, iLibraries, iLanguage, iJava);
        }
Example #3
0
        /// <summary>
        /// this tests if a link is added, changed and removed
        /// </summary>

        public void EdgeAddChangeRemove <TFactory> (SceneTestEnvironment <TItem, TEdge, TFactory> source, int iOne, int iTwo, int iThree)
            where TFactory : ISampleGraphFactory <TItem, TEdge>, new ()
        {
            source.EnsureShape(source.Nodes[iThree]);

            source.SetFocused(source.Nodes[iOne]);
            source.SceneFacade.CollapseToFocused();

            source.Expand(source.Nodes[iTwo], false);

            var sourceEdge = source.AddEdge(source.Nodes[iOne], source.Nodes[iTwo]);

            source.ChangeLink(sourceEdge, source.Nodes[iThree], true);

            source.RemoveEdge(sourceEdge);

            source.Expand(source.Nodes[iTwo], true);

            source.ProveViewNotContains(sourceEdge);
        }
Example #4
0
        public void RegisterMesh()
        {
            var sources = MeshTests(SceneTestEnvironment <TItem, TEdge>
                                    .Create <ProgrammingLanguageFactory <TItem, TEdge> > (5));

            var source = sources.First();

            foreach (var sink in sources.Skip(1))
            {
                Assert.AreSame(source.Scene, source.Display.Data);
                Assert.AreSame(sink.Scene, sink.Display.Data);
                Assert.AreSame(source.Source.Source, sink.Source.Source);

                Assert.IsTrue(Mesh.Scenes.Contains(source.Scene));
                Assert.IsTrue(Mesh.Scenes.Contains(sink.Scene));

                Assert.AreEqual(source.Nodes.Count, sink.Nodes.Count);
                Assert.AreEqual(source.Edges.Count, sink.Edges.Count);
                source = sink;
            }
        }
Example #5
0
        public void EdgeAddAndChange()
        {
            var sources = MeshTests(
                SceneTestEnvironment <TItem, TEdge> .Create <ProgrammingLanguageFactory <TItem, TEdge> > (7));

            var source = sources.First();

            var iSink = 0;

            // expand Programming
            source.Expand(source.Nodes[iProgramming], true);

            foreach (var sink in sources.Skip(1))
            {
                iSink++;

                sink.SetFocused(sink.Nodes[iNet]);
                sink.SceneFacade.CollapseToFocused();

                // add and expand Programming
                sink.Expand(sink.Nodes[iProgramming], false);

                // test if .Net and Programming in sinkView
                sink.ProveViewContains(sink.Nodes[iNet], sink.Nodes[iProgramming]);

                // make a new link, add it to source

                var sourceEdge = source.AddEdge(source.Nodes[iNet], source.Nodes[iProgramming]);
                source.ProveViewContains(sourceEdge);
                var backEdge = (TEdge)(object)source.Source.Get(sourceEdge);

                // testing the sinkGraph
                Assert.IsTrue(sink.Source.Source.Contains(backEdge));

                // adding to view
                source.SceneFacade.Add(sourceEdge, new Point(10, 10));
                source.Display.Perform();

                // testing the sinkView
                var sinkEdge = sink.Source.Get(backEdge) as IVisualEdge;
                Assert.IsNotNull(sinkEdge);

                sink.ProveViewContains(sinkEdge);

                // change the link in sink

                // not toggle with each test as the edge is deleted
                var iNewRoot = iJava; // i % 2 == 1 ? iJava : iNet;
                var iOldRoot = iNet;  // i % 2 == 1 ? iNet : iJava;

                var sinkOldRoot = sink.ChangeLink(sinkEdge, sink.Nodes[iNewRoot], true);

                // test if changed
                sink.ProveChangedEdge(sinkEdge, sink.Nodes[iNewRoot], sinkOldRoot, true);
                source.ProveChangedEdge(sourceEdge, source.Nodes[iNewRoot], source.Nodes[iOldRoot], true);

                sources.ForEach(t => {
                    var tEdge = t.Source.Get(backEdge) as IVisualEdge;
                    t.ProveChangedEdge(tEdge, t.Nodes[iNewRoot], t.Nodes[iOldRoot], true,
                                       // there could be a display without visible root and leaf
                                       t.Scene.Contains(tEdge.Root) && t.Scene.Contains(tEdge.Leaf)
                                       );
                });

                // remove in sink
                sink.RemoveEdge(sinkEdge);

                sink.ProveViewNotContains(sinkEdge);
                sink.ProveNotContains(sink.Source, sinkEdge);
                source.ProveViewNotContains(sourceEdge);

                Assert.IsFalse(sink.Source.Source.Contains(backEdge));

                sources.ForEach(t => {
                    var tEdge = t.Source.Get(backEdge) as IVisualEdge;
                    Assert.IsNull(tEdge);
                    Assert.IsFalse(t.Source.OfType <IVisualEdge>().Any(e => e.Data == sourceEdge.Data));
                });

                sink.Expand(sink.Nodes[iProgramming], true);
                sink.ProveViewNotContains(sinkEdge);
                sink.SetFocused(sink.Nodes[iNet]);
                sink.SceneFacade.CollapseToFocused();
            }
        }