public void CannotAttachAfterNodeOfDifferentParent() { object otherParent = new object(); DualLinkNode <int> otherNode = new DualLinkNode <int>(otherParent, TestInt); TestObject.AttachAfter(otherNode); }
public void PlaceAfterWithUnknownTargetThrows() { IDualLinkNode <int> testNode = TestObject.AddFirst(TestInt); DualLinkNode <int> unknownNode = new DualLinkNode <int>(TestObject, TestInt); TestObject.PlaceAfter(testNode, unknownNode); }
public void PlaceBeforeWithUnknownSourceThrows() { IDualLinkNode <int> testNode = TestObject.AddFirst(TestInt); DualLinkNode <int> unknownNode = new DualLinkNode <int>(TestObject, TestInt); TestObject.PlaceBefore(unknownNode, testNode); }
public void Init() { TestNodeA = new DualLinkNode <int>(TestParent, TestInt); TestNodeB = new DualLinkNode <int>(TestParent, TestInt); TestNodeC = new DualLinkNode <int>(TestParent, TestInt); TestObject = new DualLinkNode <int>(TestParent, TestInt); }
public void DetachAfterReturnsDetached() { TestNodeB.AttachAfter(TestNodeA); TestObject.AttachAfter(TestNodeA); DualLinkNode <int> actual = TestObject.DetachAfter(); Assert.AreSame(TestNodeB, actual); }
public void DetachBeforeReturnsDetached() { TestNodeA.AttachBefore(TestNodeB); TestObject.AttachBefore(TestNodeB); DualLinkNode <int> actual = TestObject.DetachBefore(); Assert.AreSame(TestNodeA, actual); }
private void Add(T value, IDualLinkNode <T> previous) { //Let's create the node first var node = new DualLinkNode <T>(value); //Now, we check if the list is empty, and if it is, then we add the node in the first place if (FirstNode == null) { FirstNode = node; //All done return; } //Let's check if this element goes to the head node (special case) if (previous == null) { FirstNode.Previous = node; node.Next = FirstNode; FirstNode = node; return; } //Now here's the tricky part. Let's say that we are adding n between a and b //We need to set n's previous as "a" and n's next as "b" var a = previous; var b = previous.Next; var n = node; n.Previous = a; n.Next = b; //Then, a's next has to be n a.Next = n; //And last but not least b's previous has to be n as long as b is not null if (b != null) { b.Previous = n; } //Presto finito! }
public void RemoveUnknownNodeThrows() { DualLinkNode <int> unknownNode = new DualLinkNode <int>(TestObject, TestInt); TestObject.Remove(unknownNode); }
public void PlaceLastWithUnknownNodeThrows() { DualLinkNode <int> unknownNode = new DualLinkNode <int>(TestObject, TestInt); TestObject.PlaceLast(unknownNode); }
public void AddAfterUnknownNodeThrows() { DualLinkNode <int> unknownNode = new DualLinkNode <int>(TestObject, TestInt); TestObject.AddAfter(unknownNode, TestInt); }