[Test] // Add (LinkLabel.Link) public void Add1_Overlap() { LinkLabel l = new LinkLabel(); l.Text = "Managed Windows Forms"; LinkLabel.LinkCollection links = new LinkLabel.LinkCollection( l); LinkLabel.Link linkA = new LinkLabel.Link(0, 7); links.Add(linkA); Assert.AreEqual(1, links.Count, "#A1"); Assert.IsTrue(links.LinksAdded, "#A2"); Assert.AreSame(linkA, links [0], "#A3"); LinkLabel.Link linkB = new LinkLabel.Link(5, 4); try { links.Add(linkB); Assert.Fail("#B1"); } catch (InvalidOperationException ex) { // Overlapping link regions Assert.AreEqual(typeof(InvalidOperationException), ex.GetType(), "#B2"); Assert.IsNull(ex.InnerException, "#B3"); Assert.IsNotNull(ex.Message, "#B4"); } Assert.AreEqual(2, links.Count, "#B5"); Assert.IsTrue(links.LinksAdded, "#B6"); Assert.AreSame(linkA, links [0], "#B7"); Assert.AreSame(linkB, links [1], "#B8"); Assert.AreEqual(0, linkA.Start, "#B9"); Assert.AreEqual(7, linkA.Length, "#B10"); Assert.AreEqual(5, linkB.Start, "#B11"); Assert.AreEqual(4, linkB.Length, "#B12"); LinkLabel.Link linkC = new LinkLabel.Link(14, 3); try { links.Add(linkC); Assert.Fail("#C1"); } catch (InvalidOperationException ex) { // Overlapping link regions Assert.AreEqual(typeof(InvalidOperationException), ex.GetType(), "#C2"); Assert.IsNull(ex.InnerException, "#C3"); Assert.IsNotNull(ex.Message, "#C4"); } Assert.AreEqual(3, links.Count, "#C5"); Assert.IsTrue(links.LinksAdded, "#C6"); Assert.AreSame(linkA, links [0], "#C7"); Assert.AreSame(linkB, links [1], "#C8"); Assert.AreSame(linkC, links [2], "#C9"); Assert.AreEqual(0, linkA.Start, "#C10"); Assert.AreEqual(7, linkA.Length, "#C11"); Assert.AreEqual(5, linkB.Start, "#C12"); Assert.AreEqual(4, linkB.Length, "#C13"); Assert.AreEqual(14, linkC.Start, "#C14"); Assert.AreEqual(3, linkC.Length, "#C15"); }
[Test] // Add (int, int) public void Add2() { LinkLabel l = new LinkLabel(); l.Text = "Managed Windows Forms"; LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection( l); LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection( l); LinkLabel.Link linkA = links1.Add(0, 7); Assert.AreEqual(1, links1.Count, "#A1"); Assert.AreEqual(1, links2.Count, "#A2"); #if NET_2_0 Assert.IsTrue(links1.LinksAdded, "#A3"); Assert.IsFalse(links2.LinksAdded, "#A4"); #endif Assert.AreSame(linkA, links1 [0], "#A5"); Assert.AreSame(linkA, links2 [0], "#A6"); LinkLabel.Link linkB = links1.Add(8, 7); Assert.AreEqual(2, links1.Count, "#B1"); Assert.AreEqual(2, links2.Count, "#B2"); #if NET_2_0 Assert.IsTrue(links1.LinksAdded, "#B3"); Assert.IsFalse(links2.LinksAdded, "#B4"); #endif Assert.AreSame(linkA, links1 [0], "#B5"); Assert.AreSame(linkA, links2 [0], "#B6"); Assert.AreSame(linkB, links1 [1], "#B7"); Assert.AreSame(linkB, links2 [1], "#B8"); LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection( l); Assert.AreEqual(2, links3.Count, "#C1"); #if NET_2_0 Assert.IsFalse(links3.LinksAdded, "#C2"); #endif Assert.AreSame(linkA, links3 [0], "#C3"); Assert.AreSame(linkB, links3 [1], "#C4"); }
[Test] // Add (LinkLabel.Link) public void Add1_Value_Null() { LinkLabel l = new LinkLabel(); l.Text = "Managed Windows Forms"; LinkLabel.LinkCollection links = new LinkLabel.LinkCollection( l); try { links.Add((LinkLabel.Link)null); Assert.Fail("#1"); } catch (NullReferenceException) { } }
private void RebuildWatermark() { if (myDiagramSetChanged) { myDiagramSetChanged = false; LinkLabel watermarkLabel = myWatermarkLabel; Store store = myStore; ReadOnlyCollection <Diagram> diagrams; int diagramCount; LinkLabel.LinkCollection links = watermarkLabel.Links; if (store == null || store.Disposed || 0 == (diagramCount = (diagrams = store.ElementDirectory.FindElements <Diagram>(true)).Count)) { watermarkLabel.Text = ResourceStrings.DiagramSpyNoSelection; links.Clear(); } else { Diagram[] diagramArray = new Diagram[diagramCount]; diagrams.CopyTo(diagramArray, 0); Partition targetPartition = store.DefaultPartition; Array.Sort <Diagram>( diagramArray, delegate(Diagram left, Diagram right) { // Filter diagrams, such as the context window, that are not in the default partition if (left.Partition != targetPartition) { if (right.Partition == targetPartition) { return(1); } } else if (right.Partition != targetPartition) { return(-1); } return(string.Compare(left.Name, right.Name, StringComparison.CurrentCultureIgnoreCase)); }); for (int i = diagramCount - 1; i >= 0; --i) { if (diagramArray[i].Partition == targetPartition) { break; } --diagramCount; } if (diagramCount == 0) { watermarkLabel.Text = ResourceStrings.DiagramSpyNoSelection; links.Clear(); } else { StringBuilder builder = new StringBuilder(ResourceStrings.DiagramSpyDiagramListStart); string listSeparator = CultureInfo.CurrentCulture.TextInfo.ListSeparator + " "; int separatorLength = listSeparator.Length; int offset = builder.Length; links.Clear(); for (int i = 0; i < diagramCount; ++i) { Diagram diagram = diagramArray[i]; string diagramName = diagram.Name; int nameLength = diagramName.Length; if (i != 0) { offset += separatorLength; builder.Append(listSeparator); } builder.Append(diagramName); links.Add(offset, nameLength, diagram); offset += nameLength; } watermarkLabel.Text = builder.ToString(); } } } }