public void TestEqualsPositive(int start, int length)
 {
     var left = new TextReplacementLocation(start,length,null);
     var right = new TextReplacementLocation(start,length,"Some text");
     var asObject = (object)right;
     Assert.True(left.Equals(right));
     Assert.True(left == right);
     Assert.True(left.Equals(asObject));
 }
 public void TestEqualsNegative(int start, int length)
 {
     var obj = (object)"Some text";
     var left = new TextReplacementLocation(start, length, null);
     var right = new TextReplacementLocation(start + 1, length, "Some text");
     var asObject = (object) right;
     Assert.False(left.Equals(right));
     Assert.False(left.Equals(null));
     Assert.False(left.Equals(obj));
     Assert.True(left != right);
     Assert.False(left.Equals(asObject));
 }
        public string Transform(string message)
        {
            var replacementCollection = new TextReplacementLocationCollection();
            foreach (var pattern in _patterns)
            {
                var matches = pattern.Matches(message);
                foreach (Match match in matches)
                {
                    var replacement = new TextReplacementLocation(match.Index, match.Length,
                        string.Format("<a href=\"tel:{0}\">{0}</a>", match.Value));
                    replacementCollection.CheckedAdd(replacement);
                }
            }

            var stringBuilder = new StringBuilder(message);
            foreach (var replacement in replacementCollection.OrderByDescending(r => r.Start))
            {
                stringBuilder.Remove(replacement.Start, replacement.Length);
                stringBuilder.Insert(replacement.Start, replacement.Replacement);
            }

            return string.Concat("<html><body>", stringBuilder.ToString(),"</body></html>");
        }
 public void TestContainsPositive(int startLeft, int lengthLeft, int startRight, int lengthRight)
 {
     var left = new TextReplacementLocation(startLeft,lengthLeft,null);
     var right = new TextReplacementLocation(startRight, lengthRight, null);
     Assert.True(left.Contains(right));
 }