public void AddOneElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);

            simpleLinkList.ShouldContain(2);
        }
        public void AddLastElementsInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.AddLast(2);
            simpleLinkList.AddLast(3);
            simpleLinkList.AddLast(4);

            simpleLinkList.ShouldContain(2);
        }
        public void VerifyArgumentNullExceptionForCopyToArray()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            int[] array = null;

            simpleLinkList.CopyTo(array, 2);
        }
        public void VerifyArgumentOutOfRangeExceptionForCopyToArray()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            var array = new[] { 1, 2, 0 };

            simpleLinkList.CopyTo(array, -1);
        }
        public void VerifyClearLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Clear();

            simpleLinkList.ShouldBeEmpty();
        }
Esempio n. 6
0
        /// <summary>
        /// Propagate the color of the skeleton color throught the ABruijn Graph
        /// </summary>
        /// <param name="blockColors"> A list of Blocks. The color ID of each block is also its its position in the list </param>
        /// <param name="propagationRadius"> The maximum radius that the color can propagate </param>
        /// <returns>a mapping between nodeids and their colors</returns>
        public IDictionary <int, int> PropagateSkeletonColor(IList <IList <int> > blockColors, int propagationRadius)
        {
            SimpleLinkList <int> origialSequence = new SimpleLinkList <int>();

            origialSequence.AddList(_sequence);
            IDictionary <int, IList <Node <int> > > graph = GenerateGraph(origialSequence);

            IDictionary <int, int> colorByNodeID = new Dictionary <int, int>();

            //initially, all nodes are uncolored ( -1)
            foreach (int i in _sequence)
            {
                colorByNodeID[i] = -1;
            }

            //add colors
            for (int i = 0; i < blockColors.Count; i++)
            {
                foreach (int nodeID in blockColors[i])
                {
                    colorByNodeID[nodeID] = i;
                }
            }
            HashSet <int> unColorNodes = new HashSet <int>();

            foreach (KeyValuePair <int, int> pair in colorByNodeID)
            {
                if (pair.Value == -1)
                {
                    unColorNodes.Add(pair.Key);
                }
            }
            for (int i = 0; i < propagationRadius; i++)
            {
                for (int j = 0; j < blockColors.Count; j++)
                {
                    HashSet <int> modifiedUnColoredNodes = new HashSet <int>(unColorNodes);
                    foreach (int node in modifiedUnColoredNodes)
                    {
                        int newColor = FindDominantColor(node, colorByNodeID, graph);
                        if (newColor != -1)
                        {
                            colorByNodeID[node] = newColor;
                            unColorNodes.Remove(node);
                        }
                    }
                }
            }
            return(colorByNodeID);
        }
Esempio n. 7
0
        /// <summary>
        /// Generate a mapping from NodeValue to all nodes that has that value.
        /// </summary>
        /// <param name="sequence">An Eulerian sequences of programmed Nodes</param>
        /// <returns></returns>
        private static IDictionary <int, IList <Node <int> > > GenerateGraph(SimpleLinkList <int> sequence)
        {
            IDictionary <int, IList <Node <int> > > nodeListByValue = new Dictionary <int, IList <Node <int> > >();

            foreach (Node <int> node in sequence.GetMembers())         //反射获取sequence的成员是个list的keyValue对,遍历这个list
            {
                if (nodeListByValue.ContainsKey(node.Value))           //键是node的值,也就是sequence的值,就是基因
                {
                    nodeListByValue[node.Value].Add(node);             //字典把相同基因,加入list变成一条链
                }
                else
                {
                    nodeListByValue.Add(node.Value, new List <Node <int> > {
                        node
                    });
                }
            }

            Console.Out.WriteLine("Nodes: " + nodeListByValue.Count);  //统计一共多少基因
            return(nodeListByValue);
        }
        public void VerifyRemoveANonExistentElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.ShouldContain(2);
            simpleLinkList.Remove(3);

            simpleLinkList.ShouldContain(2);
            simpleLinkList.Count.ShouldEqual(1);
        }
        public void VerifyCountWhenRemoveAnElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Remove(4);

            simpleLinkList.Count.ShouldEqual(2);
        }
 public void EmptyList()
 {
     var simpleLinkList=new SimpleLinkList<int>();
     simpleLinkList.ShouldBeEmpty();
 }
        public void VerifyIndexOutOfRangeForCopyToArray()
        {
            var simpleLinkList=new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            var array = new[] { 1, 2, 0 };

            simpleLinkList.CopyTo(array,2);
        }
        public void VerifyUpdateElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Update(2,5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.ShouldNotContain(2);
        }
        public void VerifyUpdateElementInEmptyLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();

            simpleLinkList.Update(3, 5);

            simpleLinkList.ShouldNotContain(5);
        }
        public void VerifyUpdateAnNonExistentElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Update(3, 5);

            simpleLinkList.ShouldNotContain(5);
        }
        public void VerifyCountInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            simpleLinkList.Count.ShouldEqual(3);
        }
        public void VerifyInsertDelegateAfterItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int> {2, 3, 4};
            var del = new Insert<int>(simpleLinkList.InsertItem);
            del(2, 5, false);

            CollectionAssert.AreEqual(new[] {4, 3, 2, 5}, simpleLinkList);
        }
        public void VerifyInsertRightLastItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.InsertAfter(2, 5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.Count.ShouldEqual(4);
        }
        public void VerifyInsertRightInAnEmptyLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int?>();

            simpleLinkList.InsertAfter(null, 5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.Count.ShouldEqual(1);
        }
        public void VerifyInsertLeftItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.InsertBefore(3, 5);

            simpleLinkList.ShouldContain(5);
            simpleLinkList.Count.ShouldEqual(4);
        }
        public void VerifyInsertDelegateBeforeItemInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            Insert<int> del = new Insert<int>(simpleLinkList.InsertItem);
            del(2, 5, true);

            CollectionAssert.AreEqual(new[] { 4, 3, 5, 2 }, simpleLinkList);
        }
        public void VerifyContainsItemLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            simpleLinkList.Contains(2).ShouldBeTrue();
        }
        public void VerifyRemoveFirstElementEndResutAnEmptyLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.ShouldContain(2);
            simpleLinkList.Remove(2);

            simpleLinkList.ShouldBeEmpty();
        }
        public void VerifyRemoveFirstElementInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);
            simpleLinkList.Remove(4);

            simpleLinkList.ShouldNotContain(4);
        }
        public void VerifyCopyToInLinkList()
        {
            var simpleLinkList = new SimpleLinkList<int>();
            simpleLinkList.Add(2);
            simpleLinkList.Add(3);
            simpleLinkList.Add(4);

            var array = new[] {1, 2, 3, 0, 0, 0};
            var expectedResult = new[] {1, 2, 3, 4, 3, 2};

            simpleLinkList.CopyTo(array, 3);
            CollectionAssert.AreEqual(expectedResult,array);
        }