コード例 #1
0
        public void RemovePeakOrLast()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.RemovePeak(0);
        }
コード例 #2
0
        public void InArcsCountDelPeakOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddPeak();

            Assert.AreEqual(0, graph.InArcsCount(0));
            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(0, graph.InArcsCount(2));

            graph.AddArc(1, 2);
            graph.AddArc(0, 2);

            Assert.AreEqual(0, graph.InArcsCount(0));
            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(2, graph.InArcsCount(2));

            graph.RemovePeak(1);

            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(0, graph.InArcsCount(0));
        }
コード例 #3
0
        public void AddArcOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            graph.AddArc(2, 1);

            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsFalse(graph.ContainsArc(1, 0));
            Assert.IsFalse(graph.ContainsArc(1, 2));
            Assert.IsTrue(graph.ContainsArc(2, 1));
            Assert.IsFalse(graph.ContainsArc(0, 2));
            Assert.IsFalse(graph.ContainsArc(2, 0));

            graph.AddArc(2, 0);

            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsFalse(graph.ContainsArc(1, 0));
            Assert.IsFalse(graph.ContainsArc(1, 2));
            Assert.IsTrue(graph.ContainsArc(2, 1));
            Assert.IsFalse(graph.ContainsArc(0, 2));
            Assert.IsTrue(graph.ContainsArc(2, 0));
        }
コード例 #4
0
        public void InArcsCount()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            graph.AddArc(0, 2);
            graph.AddArc(1, 2);
            graph.AddArc(1, 3);

            Assert.AreEqual(2, graph.InArcsCount(0));
            Assert.AreEqual(3, graph.InArcsCount(1));
            Assert.AreEqual(2, graph.InArcsCount(2));
            Assert.AreEqual(1, graph.InArcsCount(3));

            graph.DeleteArc(2, 1);

            Assert.AreEqual(2, graph.InArcsCount(0));
            Assert.AreEqual(2, graph.InArcsCount(1));
            Assert.AreEqual(1, graph.InArcsCount(2));
            Assert.AreEqual(1, graph.InArcsCount(3));

            graph.DeleteArc(0, 1);

            Assert.AreEqual(1, graph.InArcsCount(0));
            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(1, graph.InArcsCount(2));
            Assert.AreEqual(1, graph.InArcsCount(3));
        }
コード例 #5
0
        public void OrientedOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            Assert.IsTrue(graph.Oriented);
        }
コード例 #6
0
        public void Oriented()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            Assert.IsFalse(graph.Oriented);
        }
コード例 #7
0
        public void FiveModern()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            Dictionary <char, int> peakCodes = new Dictionary <char, int>
            {
                ['a'] = 0,
                ['b'] = 1,
                ['c'] = 2,
                ['d'] = 3,
                ['e'] = 4
            };

            graph.AddArc(peakCodes['a'], peakCodes['b']);
            graph.AddArc(peakCodes['b'], peakCodes['c']);
            graph.AddArc(peakCodes['c'], peakCodes['d']);
            graph.AddArc(peakCodes['d'], peakCodes['e']);
            graph.AddArc(peakCodes['e'], peakCodes['a']);

            graph.RemovePeak(peakCodes['c']);
            peakCodes.Remove('c');
            peakCodes['d'] = 2;
            peakCodes['e'] = 3;

            Assert.AreEqual(4, graph.PeakCount);
            Assert.IsTrue(graph.ContainsArc(peakCodes['a'], peakCodes['b']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['d'], peakCodes['e']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['e'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['d']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['b']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['b']));

            graph.RemovePeak(peakCodes['e']);
            peakCodes.Remove('e');

            Assert.AreEqual(3, graph.PeakCount);
            Assert.IsTrue(graph.ContainsArc(peakCodes['a'], peakCodes['b']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['d']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a'])); // ??? - ошибка
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['b']));
        }
コード例 #8
0
        public void RemovePeakOrRangeExLess()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(-1);
        }
コード例 #9
0
        public void RemovePeakRangeExMore()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(4);
        }
コード例 #10
0
        public void DeleteArcNotExistPeakOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.DeleteArc(4, 1);
        }
コード例 #11
0
        public void DeleteArc()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            graph.AddArc(0, 2);
            graph.AddArc(1, 2);
            graph.AddArc(1, 3);

            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.IsTrue(graph.ContainsArc(0, 2));
            Assert.IsTrue(graph.ContainsArc(2, 0));
            Assert.IsTrue(graph.ContainsArc(1, 2));
            Assert.IsTrue(graph.ContainsArc(2, 1));
            Assert.IsTrue(graph.ContainsArc(1, 3));
            Assert.IsTrue(graph.ContainsArc(3, 1));
            Assert.IsFalse(graph.ContainsArc(0, 3));
            Assert.IsFalse(graph.ContainsArc(3, 0));
            Assert.IsFalse(graph.ContainsArc(2, 3));
            Assert.IsFalse(graph.ContainsArc(3, 2));

            graph.DeleteArc(2, 1);

            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.IsTrue(graph.ContainsArc(0, 2));
            Assert.IsTrue(graph.ContainsArc(2, 0));
            Assert.IsFalse(graph.ContainsArc(1, 2));
            Assert.IsFalse(graph.ContainsArc(2, 1));
            Assert.IsTrue(graph.ContainsArc(1, 3));
            Assert.IsTrue(graph.ContainsArc(3, 1));
            Assert.IsFalse(graph.ContainsArc(0, 3));
            Assert.IsFalse(graph.ContainsArc(3, 0));
            Assert.IsFalse(graph.ContainsArc(2, 3));
            Assert.IsFalse(graph.ContainsArc(3, 2));

            graph.DeleteArc(0, 1);

            Assert.IsFalse(graph.ContainsArc(0, 1));
            Assert.IsFalse(graph.ContainsArc(1, 0));
            Assert.IsTrue(graph.ContainsArc(0, 2));
            Assert.IsTrue(graph.ContainsArc(2, 0));
            Assert.IsFalse(graph.ContainsArc(1, 2));
            Assert.IsFalse(graph.ContainsArc(2, 1));
            Assert.IsTrue(graph.ContainsArc(1, 3));
            Assert.IsTrue(graph.ContainsArc(3, 1));
            Assert.IsFalse(graph.ContainsArc(0, 3));
            Assert.IsFalse(graph.ContainsArc(3, 0));
            Assert.IsFalse(graph.ContainsArc(2, 3));
            Assert.IsFalse(graph.ContainsArc(3, 2));
        }
コード例 #12
0
        public void PeakCountOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            Assert.AreEqual(3, graph.PeakCount);
        }
コード例 #13
0
        public void RemovePeakOrMiddle()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(2);
        }
コード例 #14
0
        public void AddArcNotExistPeak()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(4, 1);
        }
コード例 #15
0
        public void RemovePeakMax()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(3);
        }
コード例 #16
0
        public void AddRepeatArcOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(0, 1);
        }
コード例 #17
0
        public void AddRepeatArcReverseEx()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            graph.AddArc(1, 0);
        }
コード例 #18
0
        public void DeleteArcIncorrect()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            graph.DeleteArc(1, 2);
        }
コード例 #19
0
        public void DeleteArcIncorrectOrInverse()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();

            graph.AddArc(0, 1);
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsFalse(graph.ContainsArc(1, 0));

            graph.DeleteArc(1, 0);
        }
コード例 #20
0
        public void RangeException()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            graph.RemovePeak(4);
            graph.RemovePeak(-1);
        }
コード例 #21
0
        public void AddPeak()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            Assert.AreEqual(3, graph.PeakCount);
            graph.AddPeak();
            Assert.AreEqual(4, graph.PeakCount);
            graph.AddPeak();
            graph.AddPeak();
            Assert.AreEqual(6, graph.PeakCount);
        }
コード例 #22
0
        public void PeakCountAfterAddOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            Assert.AreEqual(3, graph.PeakCount);
            graph.AddPeak();
            Assert.AreEqual(4, graph.PeakCount);
        }
コード例 #23
0
        public void CountAfterRemove()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            Assert.AreEqual(3, graph.PeakCount);
            graph.RemovePeak(2);
            Assert.AreEqual(2, graph.PeakCount);
        }
コード例 #24
0
        public void RemovePeakOrMany()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(3);
            Assert.AreEqual(3, graph.PeakCount);
            graph.RemovePeak(1);
            Assert.AreEqual(2, graph.PeakCount);
            graph.RemovePeak(0);
            Assert.AreEqual(1, graph.PeakCount);
        }
コード例 #25
0
        public void ThreeElFromEndInorrect()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            graph.RemovePeak(2);

            Assert.IsTrue(graph.ContainsArc(2, 1));
            Assert.IsTrue(graph.ContainsArc(1, 2));
        }
コード例 #26
0
        public void OutGoingArcsOrEmptyPeak()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);

            Assert.IsTrue(graph.OutGoingArcs(2).Count() == 0);
            foreach (var e in graph.OutGoingArcs(2))
            {
                Assert.AreEqual(0, graph.OutGoingArcs(2));
                Assert.AreEqual(0, e);
            }
        }
コード例 #27
0
        public void ThreeElFromMiddleCorrect()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            graph.RemovePeak(1);

            Assert.AreEqual(2, graph.PeakCount);
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.IsTrue(graph.ContainsArc(0, 1));
        }
コード例 #28
0
        public void FiveElFromMiddleCorrect()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();

            Dictionary <char, int> peakCodes = new Dictionary <char, int>
            {
                ['a'] = 0,
                ['b'] = 1,
                ['c'] = 2,
                ['d'] = 3,
                ['e'] = 4
            };

            graph.AddArc(peakCodes['a'], peakCodes['b']);
            graph.AddArc(peakCodes['b'], peakCodes['c']);
            graph.AddArc(peakCodes['c'], peakCodes['d']);
            graph.AddArc(peakCodes['d'], peakCodes['e']);
            graph.AddArc(peakCodes['e'], peakCodes['a']);

            graph.RemovePeak(peakCodes['c']);
            peakCodes.Remove('c');
            peakCodes['d'] = 2;
            peakCodes['e'] = 3;

            Assert.AreEqual(4, graph.PeakCount);
            Assert.IsTrue(graph.ContainsArc(peakCodes['a'], peakCodes['b']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['d'], peakCodes['e']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['e'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['d']));

            Assert.IsTrue(graph.ContainsArc(peakCodes['b'], peakCodes['a']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['e'], peakCodes['d']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['a'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['b']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['b']));
        }
コード例 #29
0
        public void RemovePeakAll()
        {
            UnweightedGraphList graph = new UnweightedGraphList(false);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.RemovePeak(3);
            Assert.AreEqual(3, graph.PeakCount);
            graph.RemovePeak(1);
            Assert.AreEqual(2, graph.PeakCount);
            graph.RemovePeak(0);
            Assert.AreEqual(1, graph.PeakCount);
            graph.RemovePeak(0);
            Assert.AreEqual(0, graph.PeakCount);
        }
コード例 #30
0
        public void OutGoingArcsOr()
        {
            UnweightedGraphList graph = new UnweightedGraphList(true);

            graph.AddPeak();
            graph.AddPeak();
            graph.AddPeak();
            graph.AddArc(0, 1);
            graph.AddArc(0, 2);
            graph.AddArc(1, 0);
            graph.AddArc(1, 2);
            graph.AddArc(2, 0);

            int i = 0;

            int[] zero = { 1, 2 };
            int[] one  = { 0, 2 };
            int[] two  = { 0 };

            foreach (var e in graph.OutGoingArcs(0))
            {
                Assert.IsTrue(graph.OutGoingArcs(0).Count() == zero.Length);
                Assert.IsTrue(zero[i] == e);
                i++;
            }

            i = 0;

            foreach (var e in graph.OutGoingArcs(1))
            {
                Assert.IsTrue(graph.OutGoingArcs(1).Count() == one.Length);
                Assert.IsTrue(one[i] == e);
                i++;
            }

            i = 0;

            foreach (var e in graph.OutGoingArcs(2))
            {
                Assert.IsTrue(graph.OutGoingArcs(2).Count() == two.Length);
                Assert.IsTrue(two[i] == e);
                i++;
            }
        }