public void ProgramminglanguageJavaDeleteOverPair()
        {
            ReportDetail("ProgramminglanguageJavaDeleteOverPair");
            var dataSource = this.Graph;
            var factory    =
                new ThingEntityGraphFactory <EntityProgrammingLanguageFactory>();

            factory.Populate(dataSource);

            var java                 = new TestItem(factory.Nodes[3].Id, null, null, null); // Java
            var programming          = new TestItem(factory.Nodes[1].Id, null, null, null); // Programming
            var programming2Language = new TestItem(factory.Edges[1].Id, null, null, null); // Programming->Language

            this.Close();
            dataSource = this.Graph;

            java.thing                 = dataSource.GetById(java.id);
            programming.thing          = dataSource.GetById(programming.id);
            programming2Language.thing = dataSource.GetById(programming2Language.id);

            var pairOne = new VisualThingGraph(new VisualGraph(), dataSource);

            programming.one = pairOne.Get(programming.thing);

            Expand <IVisual, IVisualEdge>(pairOne, programming.one);
            var pairOneTwigs    = pairOne.Twig(java.one);
            var dataSourceTwigs = dataSource.Twig(java.thing);

            java.one = pairOne.Get(java.thing);
            programming2Language.one = pairOne.Get(programming2Language.thing);

            Remove <IVisual, IVisualEdge>(pairOne, java.one);

            IsRemoved <IVisual, IVisualEdge>(pairOne, programming.one, java.one);
            IsRemoved <IVisual, IVisualEdge>(pairOne, pairOneTwigs);
            IsRemoved <IVisual, IVisualEdge>(pairOne, pairOne.Twig(programming2Language.one), java.one);

            IsRemoved <IThing, ILink>(dataSource, programming.thing, java.thing);
            IsRemoved <IThing, ILink>(dataSource, dataSourceTwigs);
            IsRemoved <IThing, ILink>(dataSource, dataSource.Twig(programming2Language.thing), java.thing);
        }
        public void ProgramminglanguageJavaDeleteTestPingBack()
        {
            ReportDetail("ProgramminglanguageJavaDeleteTestPingBack");
            var dataSource = this.Graph;

            var factory =
                new ThingEntityGraphFactory <EntityProgrammingLanguageFactory> ();

            factory.Populate(dataSource);

            var java                 = new TestItem(factory.Nodes[3].Id, null, null, null); // Java
            var list                 = new TestItem(factory.Nodes[7].Id, null, null, null); // List
            var programming          = new TestItem(factory.Nodes[1].Id, null, null, null); // Programming
            var programming2Language = new TestItem(factory.Edges[1].Id, null, null, null); // Programming->Language


            this.Close();
            dataSource = this.Graph;

            java.thing = dataSource.GetById(java.id);
            list.thing = dataSource.GetById(list.id);
            programming2Language.thing = dataSource.GetById(programming2Language.id);
            programming.thing          = dataSource.GetById(programming.id);

            var pairOne = new VisualThingGraph(new VisualGraph(), dataSource);

            var viewOne = new SubGraph <IVisual, IVisualEdge>(pairOne, new VisualGraph());

            programming.one = pairOne.Get(programming.thing); // Programming

            // expand viewOne:
            foreach (var item in pairOne.Walk().DeepWalk(programming.one, 0))
            {
                viewOne.Sink.Add(item.Node);
            }

            var pairOneTwigs    = pairOne.Twig(java.one);
            var dataSourceTwigs = dataSource.Twig(java.thing);

            var pairTwo = new VisualThingGraph(new VisualGraph(), dataSource);

            var viewTwo = new SubGraph <IVisual, IVisualEdge>(pairTwo, new VisualGraph());

            java.one        = pairOne.Get(java.thing);
            java.two        = pairTwo.Get(java.thing);
            programming.two = pairTwo.Get(programming.thing);

            // delete over PingBack in both views:


            var deleteCollection = new List <IVisualEdge>(viewOne.PostorderTwig(java.one));

            foreach (var linkOne in deleteCollection)  // Java
            {
                var linkTwo = viewOne.LookUp <IVisual, IVisualEdge, IThing, ILink>(viewTwo, linkOne);
                viewTwo.Remove(linkTwo);
                viewOne.Remove(linkOne);
            }

            java.two = viewOne.LookUp <IVisual, IVisualEdge, IThing, ILink>(viewTwo, java.one);
            viewTwo.Remove(java.two);
            viewOne.Remove(java.one);

            // testing the dataSource:
            IsRemoved <IThing, ILink>(dataSource, programming.thing, java.thing);

            var edges = dataSource.Edges(programming2Language.thing);

            foreach (var link in edges)
            {
                Assert.AreNotEqual(link.Root, java.thing);
                Assert.AreNotEqual(link.Leaf, java.thing);
            }

            IsRemoved <IThing, ILink>(dataSource, dataSourceTwigs);

            // testing pairOne
            IsRemoved <IVisual, IVisualEdge>(pairOne, programming.one, java.one);
            IsRemoved <IVisual, IVisualEdge>(pairOne, pairOneTwigs);

            // testing pairTwo
            IsRemoved <IVisual, IVisualEdge>(pairTwo, programming.two, java.two);
        }