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(); }
/// <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); }
/// <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); }