/com.bodurov.SilverlightControls/com.bodurov.SilverlightControls.XmlCodeEditor.Tests/IterativeTokenizerCanParseIncomplete.cs

# · C# · 235 lines · 174 code · 29 blank · 32 comment · 0 complexity · 65da4a887242500686af4a2bd4f9a0f7 MD5 · raw file

  1. using System;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using E = com.bodurov.SilverlightControls.XmlCodeEditor.Enums.XmlElement;
  4. using A = com.bodurov.SilverlightControls.XmlCodeEditor.Enums.XmlArea;
  5. namespace com.bodurov.SilverlightControls.XmlCodeEditor.Tests
  6. {
  7. [TestClass]//[Ignore]
  8. public class IterativeTokenizerCanParseIncomplete : BaseTokenFixture
  9. {
  10. //"<a href='/Home.html' style=\"border:solid 1px red\" "
  11. [TestMethod]//[Ignore]
  12. public void CanParseIncomplete_Case_1()
  13. {
  14. var str = Lines("<!DOCTYPE html<html ");
  15. var tokenizer = new IterativeTokenizer();
  16. var tokens = tokenizer.ParseTokens(str);
  17. //BuildAssertions(tokens);
  18. //TraceTokens(tokens);
  19. AssertTokens(tokens,
  20. Within(A.InsideTag,
  21. Expect("<", E.OpeningTagBeginBracket),
  22. Expect("!DOCTYPE", E.OpeningTagName),
  23. Expect(" ", E.WhiteSpace),
  24. Expect("html", E.AttributeName),
  25. Expect("<", E.OpeningTagBeginBracket),
  26. Expect("html", E.OpeningTagName),
  27. Expect(" ", E.WhiteSpace)));
  28. }
  29. [TestMethod]//[Ignore]
  30. public void CanParseIncomplete_Case_2()
  31. {
  32. var str = Lines("<a href='/Home.html' style=\"border:solid 1px red\" ",
  33. "<newtag");
  34. var tokenizer = new IterativeTokenizer();
  35. var tokens = tokenizer.ParseTokens(str);
  36. //BuildAssertions(tokens);
  37. //TraceTokens(tokens);
  38. AssertTokens(tokens,
  39. Within(A.InsideTag,
  40. Expect("<", E.OpeningTagBeginBracket),
  41. Expect("a", E.OpeningTagName),
  42. Expect(" ", E.WhiteSpace),
  43. Expect("href", E.AttributeName),
  44. Expect("=", E.AttributeEqualSign),
  45. Expect("'/Home.html'", E.AttributeSingleQuoteString),
  46. Expect(" ", E.WhiteSpace),
  47. Expect("style", E.AttributeName),
  48. Expect("=", E.AttributeEqualSign),
  49. Expect("\"border:solid 1px red\"", E.AttributeDualQuoteString),
  50. Expect(" ", E.WhiteSpace),
  51. Expect_NewLine,
  52. Expect("<", E.OpeningTagBeginBracket),
  53. Expect("newtag", E.OpeningTagName)));
  54. }
  55. [TestMethod]//[Ignore]
  56. public void CanParseIncomplete_Case_3()
  57. {
  58. var str = Lines("<abc",
  59. "< <cde");
  60. var tokenizer = new IterativeTokenizer();
  61. var tokens = tokenizer.ParseTokens(str);
  62. //BuildAssertions(tokens);
  63. //TraceTokens(tokens);
  64. AssertTokens(tokens,
  65. Within(A.InsideTag,
  66. Expect("<", E.OpeningTagBeginBracket),
  67. Expect("abc", E.OpeningTagName),
  68. Expect_NewLine,
  69. Expect("< ", E.OutsideTagContent),
  70. Expect("<", E.OpeningTagBeginBracket),
  71. Expect("cde", E.OpeningTagName)));
  72. }
  73. [TestMethod]//[Ignore]
  74. public void CanParseIncomplete_Case_4()
  75. {
  76. var str = Lines(" <table><abc id=\"sdf");
  77. var tokenizer = new IterativeTokenizer();
  78. var tokens = tokenizer.ParseTokens(str);
  79. //BuildAssertions(tokens);
  80. //TraceTokens(tokens);
  81. AssertTokens(tokens,
  82. Within(A.OutsideTag,
  83. Expect(" ", E.OutsideTagContent)),
  84. Within(A.InsideTag,
  85. Expect("<", E.OpeningTagBeginBracket),
  86. Expect("table", E.OpeningTagName),
  87. Expect(">", E.OpeningTagEndBracket),
  88. Expect("<", E.OpeningTagBeginBracket),
  89. Expect("abc", E.OpeningTagName),
  90. Expect(" ", E.WhiteSpace),
  91. Expect("id", E.AttributeName),
  92. Expect("=", E.AttributeEqualSign),
  93. Expect("\"sdf", E.AttributeDualQuoteString)));
  94. }
  95. [TestMethod]//[Ignore]
  96. public void CanParseIncomplete_Case_5()
  97. {
  98. var str = Lines(
  99. " <div class=\"topLinks\">",
  100. " <a href=\"http://blog.bodurov.com\">",
  101. " myBLOG",
  102. " </a>",
  103. " &nbsp; &nbsp;",
  104. " <a href=\"javascript:void(0);\" ",
  105. " onClick=\"document.location.href='mailto:Vladimir Bodurov <conta'+'ct'+'\x40'+'bo'+'durov'+'.'+'com>';void(0);\">",
  106. " contact",
  107. " </a>",
  108. " </div>"
  109. );
  110. var tokenizer = new IterativeTokenizer();
  111. var tokens = tokenizer.ParseTokens(str);
  112. //BuildAssertions(tokens);
  113. //TraceTokens(tokens);
  114. AssertTokens(tokens,
  115. Within(A.OutsideTag,
  116. Expect(" ", E.OutsideTagContent)),
  117. Within(A.InsideTag,
  118. Expect("<", E.OpeningTagBeginBracket),
  119. Expect("div", E.OpeningTagName),
  120. Expect(" ", E.WhiteSpace),
  121. Expect("class", E.AttributeName),
  122. Expect("=", E.AttributeEqualSign),
  123. Expect("\"topLinks\"", E.AttributeDualQuoteString),
  124. Expect(">", E.OpeningTagEndBracket)),
  125. Within(A.OutsideTag,
  126. Expect_NewLine,
  127. Expect(" ", E.OutsideTagContent)),
  128. Within(A.InsideTag,
  129. Expect("<", E.OpeningTagBeginBracket),
  130. Expect("a", E.OpeningTagName),
  131. Expect(" ", E.WhiteSpace),
  132. Expect("href", E.AttributeName),
  133. Expect("=", E.AttributeEqualSign),
  134. Expect("\"http://blog.bodurov.com\"", E.AttributeDualQuoteString),
  135. Expect(">", E.OpeningTagEndBracket)),
  136. Within(A.OutsideTag,
  137. Expect_NewLine,
  138. Expect(" myBLOG", E.OutsideTagContent),
  139. Expect_NewLine,
  140. Expect(" ", E.OutsideTagContent)),
  141. Within(A.InsideTag,
  142. Expect("</", E.ClosingTagBeginBracket),
  143. Expect("a", E.ClosingTagName),
  144. Expect(">", E.ClosingTagEndBracket)),
  145. Within(A.OutsideTag,
  146. Expect_NewLine,
  147. Expect(" ", E.OutsideTagContent),
  148. Expect("&nbsp;", E.Entity),
  149. Expect(" ", E.OutsideTagContent),
  150. Expect("&nbsp;", E.Entity),
  151. Expect_NewLine,
  152. Expect(" ", E.OutsideTagContent)),
  153. Within(A.InsideTag,
  154. Expect("<", E.OpeningTagBeginBracket),
  155. Expect("a", E.OpeningTagName),
  156. Expect(" ", E.WhiteSpace),
  157. Expect("href", E.AttributeName),
  158. Expect("=", E.AttributeEqualSign),
  159. Expect("\"javascript:void(0);\"", E.AttributeDualQuoteString),
  160. Expect(" ", E.WhiteSpace),
  161. Expect_NewLine,
  162. Expect(" ", E.WhiteSpace),
  163. Expect("onClick", E.AttributeName),
  164. Expect("=", E.AttributeEqualSign),
  165. Expect("\"document.location.href='mailto:Vladimir Bodurov <conta'+'ct'+'@'+'bo'+'durov'+'.'+'com>';void(0);\"", E.AttributeDualQuoteString),
  166. Expect(">", E.OpeningTagEndBracket)),
  167. Within(A.OutsideTag,
  168. Expect_NewLine,
  169. Expect(" contact", E.OutsideTagContent),
  170. Expect_NewLine,
  171. Expect(" ", E.OutsideTagContent)),
  172. Within(A.InsideTag,
  173. Expect("</", E.ClosingTagBeginBracket),
  174. Expect("a", E.ClosingTagName),
  175. Expect(">", E.ClosingTagEndBracket)),
  176. Within(A.OutsideTag,
  177. Expect_NewLine,
  178. Expect(" ", E.OutsideTagContent)),
  179. Within(A.InsideTag,
  180. Expect("</", E.ClosingTagBeginBracket),
  181. Expect("div", E.ClosingTagName),
  182. Expect(">", E.ClosingTagEndBracket)));
  183. }
  184. //" <a href="/Clubhouse
  185. // <cms:NewsObjectProperty runat="server"
  186. // PropertyName="Path" />
  187. //">
  188. /* [TestMethod]//[Ignore]
  189. public void CanParseIncomplete_Case_6()
  190. {
  191. var str = Lines(@" <a href=""/Clubhouse
  192. <cms:NewsObjectProperty runat=""server""
  193. PropertyName=""Path"" />
  194. '>");
  195. var tokenizer = new IterativeTokenizer();
  196. var tokens = tokenizer.ParseTokens(str);
  197. //BuildAssertions(tokens);
  198. TraceTokens(tokens);
  199. }*/
  200. }
  201. }