test_TextMarkup.cpp 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #if defined(LYSHINE_INTERNAL_UNIT_TEST)
  9. #include <IConsole.h>
  10. namespace
  11. {
  12. void AnchorTagTests()
  13. {
  14. const LyShine::StringType rawCharData("this is a test!");
  15. ///////////////////////////////////////////////////////////////
  16. // Valid markup tests
  17. // Wrap just "test" in an anchor
  18. {
  19. LyShine::StringType source = "this is a <a action=\"action\" data=\"data\">test</a>!";
  20. LyShine::StringType expectedMarkup = "<root><ch value=\"this is a \" /><a action=\"action\" data=\"data\"><ch value=\"test\" /></a><ch value=\"!\" /></root>";
  21. LyShine::StringType markupTarget;
  22. InsertMarkup(source, markupTarget);
  23. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  24. LyShine::StringType target;
  25. TextMarkup::CopyCharData(source, target);
  26. AZ_Assert(rawCharData == target, "Test failed");
  27. }
  28. // Wrap whole string in an anchor
  29. {
  30. LyShine::StringType source = "<a action=\"action\" data=\"data\">this is a test!</a>";
  31. LyShine::StringType expectedMarkup = "<root><a action=\"action\" data=\"data\"><ch value=\"this is a test!\" /></a></root>";
  32. LyShine::StringType markupTarget;
  33. InsertMarkup(source, markupTarget);
  34. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  35. LyShine::StringType target;
  36. TextMarkup::CopyCharData(source, target);
  37. AZ_Assert(rawCharData == target, "Test failed");
  38. }
  39. // Two anchor tags: "this" and "test"
  40. {
  41. LyShine::StringType source = "<a action=\"action\" data=\"data\">this</a> is a <a action=\"action\" data=\"data\">test</a>!";
  42. LyShine::StringType expectedMarkup = "<root><a action=\"action\" data=\"data\"><ch value=\"this\" /></a><ch value=\" is a \" /><a action=\"action\" data=\"data\"><ch value=\"test\" /></a><ch value=\"!\" /></root>";
  43. LyShine::StringType markupTarget;
  44. InsertMarkup(source, markupTarget);
  45. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  46. LyShine::StringType target;
  47. TextMarkup::CopyCharData(source, target);
  48. AZ_Assert(rawCharData == target, "Test failed");
  49. }
  50. // Wrap just "test" in an anchor; only has 'action' attribute
  51. {
  52. LyShine::StringType source = "this is a <a action=\"action\">test</a>!";
  53. LyShine::StringType expectedMarkup = "<root><ch value=\"this is a \" /><a action=\"action\"><ch value=\"test\" /></a><ch value=\"!\" /></root>";
  54. LyShine::StringType markupTarget;
  55. InsertMarkup(source, markupTarget);
  56. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  57. LyShine::StringType target;
  58. TextMarkup::CopyCharData(source, target);
  59. AZ_Assert(rawCharData == target, "Test failed");
  60. }
  61. // Wrap just "test" in an anchor; only has 'data' attribute
  62. {
  63. LyShine::StringType source = "this is a <a data=\"data\">test</a>!";
  64. LyShine::StringType expectedMarkup = "<root><ch value=\"this is a \" /><a data=\"data\"><ch value=\"test\" /></a><ch value=\"!\" /></root>";
  65. LyShine::StringType markupTarget;
  66. InsertMarkup(source, markupTarget);
  67. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  68. LyShine::StringType target;
  69. TextMarkup::CopyCharData(source, target);
  70. AZ_Assert(rawCharData == target, "Test failed");
  71. }
  72. ///////////////////////////////////////////////////////////////
  73. // Bad xml tests
  74. #if 0
  75. // Nested anchor tags
  76. {
  77. LyShine::StringType source = "<a action=\"action\" data=\"data\"><a action=\"action\" data=\"data\">this</a></a> is a test!";
  78. LyShine::StringType target;
  79. TextMarkup::CopyCharData(source, target);
  80. AZ_Assert(source == target, "Test failed");
  81. }
  82. #endif
  83. // Anchor tags with no attributes
  84. {
  85. LyShine::StringType source = "this is a <a>test</a>!";
  86. LyShine::StringType target;
  87. TextMarkup::CopyCharData(source, target);
  88. AZ_Assert(source == target, "Test failed");
  89. }
  90. // Anchor tags with invalid attributes
  91. {
  92. LyShine::StringType source = "this is a <a bad=\"bad\">test</a>!";
  93. LyShine::StringType target;
  94. TextMarkup::CopyCharData(source, target);
  95. AZ_Assert(source == target, "Test failed");
  96. }
  97. // Anchor tags with valid and invalid attributes
  98. {
  99. LyShine::StringType source = "this is a <a action=\"action\" bad=\"bad\">test</a>!";
  100. LyShine::StringType target;
  101. TextMarkup::CopyCharData(source, target);
  102. AZ_Assert(source == target, "Test failed");
  103. }
  104. {
  105. LyShine::StringType source = "this is a <a data=\"data\" bad=\"bad\">test</a>!";
  106. LyShine::StringType target;
  107. TextMarkup::CopyCharData(source, target);
  108. AZ_Assert(source == target, "Test failed");
  109. }
  110. {
  111. LyShine::StringType source = "this is a <a action=\"action\" data=\"data\" bad=\"bad\">test</a>!";
  112. LyShine::StringType target;
  113. TextMarkup::CopyCharData(source, target);
  114. AZ_Assert(source == target, "Test failed");
  115. }
  116. }
  117. }
  118. void TextMarkup::UnitTest(IConsoleCmdArgs* /* cmdArgs*/)
  119. {
  120. ///////////////////////////////////////////////////////////////
  121. // Expected inputs: general
  122. {
  123. const LyShine::StringType rawCharData("this is a test!");
  124. LyShine::StringType source = "this <i>is</i> a <b>test</b>!";
  125. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  126. LyShine::StringType markupTarget;
  127. InsertMarkup(source, markupTarget);
  128. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  129. LyShine::StringType target;
  130. TextMarkup::CopyCharData(source, target);
  131. AZ_Assert(rawCharData == target, "Test failed");
  132. }
  133. {
  134. const LyShine::StringType rawCharData("this is a test!");
  135. LyShine::StringType source = "<b>this</b> <i>is</i> a <b>test</b>!";
  136. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  137. LyShine::StringType markupTarget;
  138. InsertMarkup(source, markupTarget);
  139. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  140. LyShine::StringType target;
  141. TextMarkup::CopyCharData(source, target);
  142. AZ_Assert(rawCharData == target, "Test failed");
  143. }
  144. ///////////////////////////////////////////////////////////////
  145. // Expected inputs: <font> tag
  146. {
  147. const LyShine::StringType rawCharData("this is a test!");
  148. LyShine::StringType source = "<font face=\"times\">this</font> <i>is</i> a <b>test</b>!";
  149. LyShine::StringType expectedMarkup = "<root><font face=\"times\"><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  150. LyShine::StringType markupTarget;
  151. InsertMarkup(source, markupTarget);
  152. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  153. LyShine::StringType target;
  154. TextMarkup::CopyCharData(source, target);
  155. AZ_Assert(rawCharData == target, "Test failed");
  156. }
  157. {
  158. const LyShine::StringType rawCharData("this is a test!");
  159. LyShine::StringType source = "<font color=\"#FF00FF\">this</font> <i>is</i> a <b>test</b>!";
  160. LyShine::StringType expectedMarkup = "<root><font color=\"#FF00FF\"><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  161. LyShine::StringType markupTarget;
  162. InsertMarkup(source, markupTarget);
  163. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  164. LyShine::StringType target;
  165. TextMarkup::CopyCharData(source, target);
  166. AZ_Assert(rawCharData == target, "Test failed");
  167. }
  168. {
  169. const LyShine::StringType rawCharData("this is a test!");
  170. LyShine::StringType source = "<font color=\"#FF00FF\" face=\"times\">this</font> <i>is</i> a <b>test</b>!";
  171. LyShine::StringType expectedMarkup = "<root><font color=\"#FF00FF\" face=\"times\"><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  172. LyShine::StringType markupTarget;
  173. InsertMarkup(source, markupTarget);
  174. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  175. LyShine::StringType target;
  176. TextMarkup::CopyCharData(source, target);
  177. AZ_Assert(rawCharData == target, "Test failed");
  178. }
  179. {
  180. const LyShine::StringType rawCharData("this is a test!");
  181. LyShine::StringType source = "<font face=\"times\" color=\"#FF00FF\" >this</font> <i>is</i> a <b>test</b>!";
  182. LyShine::StringType expectedMarkup = "<root><font face=\"times\" color=\"#FF00FF\" ><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  183. LyShine::StringType markupTarget;
  184. InsertMarkup(source, markupTarget);
  185. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  186. LyShine::StringType target;
  187. TextMarkup::CopyCharData(source, target);
  188. AZ_Assert(rawCharData == target, "Test failed");
  189. }
  190. {
  191. const LyShine::StringType rawCharData("this is a test!");
  192. LyShine::StringType source = "<font face=\"times\">this <i>is</i> a <b>test</b>!</font>";
  193. LyShine::StringType expectedMarkup = "<root><font face=\"times\"><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></font></root>";
  194. LyShine::StringType markupTarget;
  195. InsertMarkup(source, markupTarget);
  196. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  197. LyShine::StringType target;
  198. TextMarkup::CopyCharData(source, target);
  199. AZ_Assert(rawCharData == target, "Test failed");
  200. }
  201. {
  202. const LyShine::StringType rawCharData("this is a test!");
  203. LyShine::StringType source = "<font color=\"#FF00FF\">this <i>is</i> a <b>test</b>!</font>";
  204. LyShine::StringType expectedMarkup = "<root><font color=\"#FF00FF\"><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></font></root>";
  205. LyShine::StringType markupTarget;
  206. InsertMarkup(source, markupTarget);
  207. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  208. LyShine::StringType target;
  209. TextMarkup::CopyCharData(source, target);
  210. AZ_Assert(rawCharData == target, "Test failed");
  211. }
  212. {
  213. const LyShine::StringType rawCharData("this is a test!");
  214. LyShine::StringType source = "<font color=\"#FF00FF\" face=\"times\">this <i>is</i> a <b>test</b>!</font>";
  215. LyShine::StringType expectedMarkup = "<root><font color=\"#FF00FF\" face=\"times\"><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></font></root>";
  216. LyShine::StringType markupTarget;
  217. InsertMarkup(source, markupTarget);
  218. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  219. LyShine::StringType target;
  220. TextMarkup::CopyCharData(source, target);
  221. AZ_Assert(rawCharData == target, "Test failed");
  222. }
  223. {
  224. const LyShine::StringType rawCharData("this is a test!");
  225. LyShine::StringType source = "<font face=\"times\" color=\"#FF00FF\" >this <i>is</i> a <b>test</b>!</font>";
  226. LyShine::StringType expectedMarkup = "<root><font face=\"times\" color=\"#FF00FF\" ><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></font></root>";
  227. LyShine::StringType markupTarget;
  228. InsertMarkup(source, markupTarget);
  229. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  230. LyShine::StringType target;
  231. TextMarkup::CopyCharData(source, target);
  232. AZ_Assert(rawCharData == target, "Test failed");
  233. }
  234. ///////////////////////////////////////////////////////////////
  235. // Font tags with no attributes: expect failure
  236. {
  237. const LyShine::StringType rawCharData("this is a test!");
  238. LyShine::StringType source = "<font>this</font> <i>is</i> a <b>test</b>!";
  239. LyShine::StringType expectedMarkup = "<root><font><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  240. LyShine::StringType markupTarget;
  241. InsertMarkup(source, markupTarget);
  242. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  243. LyShine::StringType target;
  244. TextMarkup::CopyCharData(source, target);
  245. AZ_Assert(source == target, "Test failed");
  246. }
  247. {
  248. const LyShine::StringType rawCharData("this is a test!");
  249. LyShine::StringType source = "this <i><font>is</font></i> a <b>test</b>!";
  250. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><font><ch value=\"is\" /></font></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  251. LyShine::StringType markupTarget;
  252. InsertMarkup(source, markupTarget);
  253. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  254. LyShine::StringType target;
  255. TextMarkup::CopyCharData(source, target);
  256. AZ_Assert(source == target, "Test failed");
  257. }
  258. {
  259. const LyShine::StringType rawCharData("this is a test!");
  260. LyShine::StringType source = "this <i>is</i> a <b><font>test</font></b>!";
  261. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><font><ch value=\"test\" /></font></b><ch value=\"!\" /></root>";
  262. LyShine::StringType markupTarget;
  263. InsertMarkup(source, markupTarget);
  264. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  265. LyShine::StringType target;
  266. TextMarkup::CopyCharData(source, target);
  267. AZ_Assert(source == target, "Test failed");
  268. }
  269. ///////////////////////////////////////////////////////////////
  270. // Font tags with unrecognized attributes: expect failure
  271. {
  272. const LyShine::StringType rawCharData("this is a test!");
  273. LyShine::StringType source = "<font bad=\"1\">this</font> <i>is</i> a <b>test</b>!";
  274. LyShine::StringType expectedMarkup = "<root><font bad=\"1\"><ch value=\"this\" /></font><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  275. LyShine::StringType markupTarget;
  276. InsertMarkup(source, markupTarget);
  277. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  278. LyShine::StringType target;
  279. TextMarkup::CopyCharData(source, target);
  280. AZ_Assert(source == target, "Test failed");
  281. }
  282. {
  283. const LyShine::StringType rawCharData("this is a test!");
  284. LyShine::StringType source = "this <i><font bad=\"1\">is</font></i> a <b>test</b>!";
  285. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><font bad=\"1\"><ch value=\"is\" /></font></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  286. LyShine::StringType markupTarget;
  287. InsertMarkup(source, markupTarget);
  288. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  289. LyShine::StringType target;
  290. TextMarkup::CopyCharData(source, target);
  291. AZ_Assert(source == target, "Test failed");
  292. }
  293. {
  294. const LyShine::StringType rawCharData("this is a test!");
  295. LyShine::StringType source = "this <i>is</i> a <b><font bad=\"1\">test</font></b>!";
  296. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><font bad=\"1\"><ch value=\"test\" /></font></b><ch value=\"!\" /></root>";
  297. LyShine::StringType markupTarget;
  298. InsertMarkup(source, markupTarget);
  299. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  300. LyShine::StringType target;
  301. TextMarkup::CopyCharData(source, target);
  302. AZ_Assert(source == target, "Test failed");
  303. }
  304. ///////////////////////////////////////////////////////////////
  305. // Spacing tests
  306. {
  307. const LyShine::StringType rawCharData("this is a test!");
  308. LyShine::StringType source = "this <i>is</i> a <b>test</b>!";
  309. LyShine::StringType expectedMarkup = "<root><ch value=\"this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  310. LyShine::StringType markupTarget;
  311. InsertMarkup(source, markupTarget);
  312. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  313. LyShine::StringType target;
  314. TextMarkup::CopyCharData(source, target);
  315. AZ_Assert(rawCharData == target, "Test failed");
  316. }
  317. {
  318. const LyShine::StringType rawCharData(" thisis a test!");
  319. LyShine::StringType source = " this<i>is</i> a <b>test</b>!";
  320. LyShine::StringType expectedMarkup = "<root><ch value=\" this\" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  321. LyShine::StringType markupTarget;
  322. InsertMarkup(source, markupTarget);
  323. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  324. LyShine::StringType target;
  325. TextMarkup::CopyCharData(source, target);
  326. AZ_Assert(rawCharData == target, "Test failed");
  327. }
  328. {
  329. const LyShine::StringType rawCharData(" this is a test!");
  330. LyShine::StringType source = " this <i>is</i> a <b>test</b>!";
  331. LyShine::StringType expectedMarkup = "<root><ch value=\" this \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  332. LyShine::StringType markupTarget;
  333. InsertMarkup(source, markupTarget);
  334. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  335. LyShine::StringType target;
  336. TextMarkup::CopyCharData(source, target);
  337. AZ_Assert(rawCharData == target, "Test failed");
  338. }
  339. {
  340. const LyShine::StringType rawCharData("this is a test!");
  341. LyShine::StringType source = "<b>this</b> <i>is</i> a <b>test</b>!";
  342. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  343. LyShine::StringType markupTarget;
  344. InsertMarkup(source, markupTarget);
  345. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  346. LyShine::StringType target;
  347. TextMarkup::CopyCharData(source, target);
  348. AZ_Assert(rawCharData == target, "Test failed");
  349. }
  350. {
  351. const LyShine::StringType rawCharData("this is a test!");
  352. LyShine::StringType source = "<b>this</b> <i>is</i> a <b>test</b>!";
  353. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  354. LyShine::StringType markupTarget;
  355. InsertMarkup(source, markupTarget);
  356. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  357. LyShine::StringType target;
  358. TextMarkup::CopyCharData(source, target);
  359. AZ_Assert(rawCharData == target, "Test failed");
  360. }
  361. {
  362. const LyShine::StringType rawCharData("this is a test!");
  363. LyShine::StringType source = "<b>this</b> <i>is</i> a <b>test</b>!";
  364. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  365. LyShine::StringType markupTarget;
  366. InsertMarkup(source, markupTarget);
  367. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  368. LyShine::StringType target;
  369. TextMarkup::CopyCharData(source, target);
  370. AZ_Assert(rawCharData == target, "Test failed");
  371. }
  372. {
  373. const LyShine::StringType rawCharData("this is a test!");
  374. LyShine::StringType source = "<b>this</b><i></i> <i>is</i> a <b>test</b>!";
  375. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><i></i><ch value=\" \" /><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  376. LyShine::StringType markupTarget;
  377. InsertMarkup(source, markupTarget);
  378. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  379. LyShine::StringType target;
  380. TextMarkup::CopyCharData(source, target);
  381. AZ_Assert(rawCharData == target, "Test failed");
  382. }
  383. {
  384. const LyShine::StringType rawCharData("this is a test!");
  385. LyShine::StringType source = "<b>this</b> <i></i><i>is</i> a <b>test</b>!";
  386. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><ch value=\" \" /><i></i><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  387. LyShine::StringType markupTarget;
  388. InsertMarkup(source, markupTarget);
  389. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  390. LyShine::StringType target;
  391. TextMarkup::CopyCharData(source, target);
  392. AZ_Assert(rawCharData == target, "Test failed");
  393. }
  394. {
  395. const LyShine::StringType rawCharData("this is a test!");
  396. LyShine::StringType source = "<b>this</b><i></i> <b></b><i>is</i> a <b>test</b>!";
  397. LyShine::StringType expectedMarkup = "<root><b><ch value=\"this\" /></b><i></i><ch value=\" \" /><b></b><i><ch value=\"is\" /></i><ch value=\" a \" /><b><ch value=\"test\" /></b><ch value=\"!\" /></root>";
  398. LyShine::StringType markupTarget;
  399. InsertMarkup(source, markupTarget);
  400. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  401. LyShine::StringType target;
  402. TextMarkup::CopyCharData(source, target);
  403. AZ_Assert(rawCharData == target, "Test failed");
  404. }
  405. ///////////////////////////////////////////////////////////////
  406. // Spacing tests: character escaping
  407. {
  408. const LyShine::StringType rawCharData("& 1");
  409. LyShine::StringType source = "&amp; 1";
  410. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1\" /></root>";
  411. LyShine::StringType markupTarget;
  412. InsertMarkup(source, markupTarget);
  413. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  414. LyShine::StringType target;
  415. TextMarkup::CopyCharData(source, target);
  416. AZ_Assert(rawCharData == target, "Test failed");
  417. }
  418. {
  419. const LyShine::StringType rawCharData("& 1");
  420. LyShine::StringType source = "&amp; 1";
  421. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1\" /></root>";
  422. LyShine::StringType markupTarget;
  423. InsertMarkup(source, markupTarget);
  424. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  425. LyShine::StringType target;
  426. TextMarkup::CopyCharData(source, target);
  427. AZ_Assert(rawCharData == target, "Test failed");
  428. }
  429. {
  430. const LyShine::StringType rawCharData("& ");
  431. LyShine::StringType source = "&amp; ";
  432. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; \" /></root>";
  433. LyShine::StringType markupTarget;
  434. InsertMarkup(source, markupTarget);
  435. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  436. LyShine::StringType target;
  437. TextMarkup::CopyCharData(source, target);
  438. AZ_Assert(rawCharData == target, "Test failed");
  439. }
  440. {
  441. const LyShine::StringType rawCharData(" &");
  442. LyShine::StringType source = " &amp;";
  443. LyShine::StringType expectedMarkup = "<root><ch value=\" &amp;\" /></root>";
  444. LyShine::StringType markupTarget;
  445. InsertMarkup(source, markupTarget);
  446. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  447. LyShine::StringType target;
  448. TextMarkup::CopyCharData(source, target);
  449. AZ_Assert(rawCharData == target, "Test failed");
  450. }
  451. {
  452. const LyShine::StringType rawCharData(" & ");
  453. LyShine::StringType source = " &amp; ";
  454. LyShine::StringType expectedMarkup = "<root><ch value=\" &amp; \" /></root>";
  455. LyShine::StringType markupTarget;
  456. InsertMarkup(source, markupTarget);
  457. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  458. LyShine::StringType target;
  459. TextMarkup::CopyCharData(source, target);
  460. AZ_Assert(rawCharData == target, "Test failed");
  461. }
  462. {
  463. const LyShine::StringType rawCharData("&1 ");
  464. LyShine::StringType source = "&amp;1 ";
  465. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp;1 \" /></root>";
  466. LyShine::StringType markupTarget;
  467. InsertMarkup(source, markupTarget);
  468. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  469. LyShine::StringType target;
  470. TextMarkup::CopyCharData(source, target);
  471. AZ_Assert(rawCharData == target, "Test failed");
  472. }
  473. {
  474. const LyShine::StringType rawCharData("& 1");
  475. LyShine::StringType source = "&amp; 1";
  476. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1\" /></root>";
  477. LyShine::StringType markupTarget;
  478. InsertMarkup(source, markupTarget);
  479. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  480. LyShine::StringType target;
  481. TextMarkup::CopyCharData(source, target);
  482. AZ_Assert(rawCharData == target, "Test failed");
  483. }
  484. {
  485. const LyShine::StringType rawCharData("1&");
  486. LyShine::StringType source = "1&amp;";
  487. LyShine::StringType expectedMarkup = "<root><ch value=\"1&amp;\" /></root>";
  488. LyShine::StringType markupTarget;
  489. InsertMarkup(source, markupTarget);
  490. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  491. LyShine::StringType target;
  492. TextMarkup::CopyCharData(source, target);
  493. AZ_Assert(rawCharData == target, "Test failed");
  494. }
  495. {
  496. const LyShine::StringType rawCharData("1& ");
  497. LyShine::StringType source = "1&amp; ";
  498. LyShine::StringType expectedMarkup = "<root><ch value=\"1&amp; \" /></root>";
  499. LyShine::StringType markupTarget;
  500. InsertMarkup(source, markupTarget);
  501. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  502. LyShine::StringType target;
  503. TextMarkup::CopyCharData(source, target);
  504. AZ_Assert(rawCharData == target, "Test failed");
  505. }
  506. {
  507. const LyShine::StringType rawCharData("1 &");
  508. LyShine::StringType source = "1 &amp;";
  509. LyShine::StringType expectedMarkup = "<root><ch value=\"1 &amp;\" /></root>";
  510. LyShine::StringType markupTarget;
  511. InsertMarkup(source, markupTarget);
  512. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  513. LyShine::StringType target;
  514. TextMarkup::CopyCharData(source, target);
  515. AZ_Assert(rawCharData == target, "Test failed");
  516. }
  517. {
  518. const LyShine::StringType rawCharData(" 1&");
  519. LyShine::StringType source = " 1&amp;";
  520. LyShine::StringType expectedMarkup = "<root><ch value=\" 1&amp;\" /></root>";
  521. LyShine::StringType markupTarget;
  522. InsertMarkup(source, markupTarget);
  523. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  524. LyShine::StringType target;
  525. TextMarkup::CopyCharData(source, target);
  526. AZ_Assert(rawCharData == target, "Test failed");
  527. }
  528. {
  529. const LyShine::StringType rawCharData("&1 &");
  530. LyShine::StringType source = "&amp;1 &amp;";
  531. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp;1 &amp;\" /></root>";
  532. LyShine::StringType markupTarget;
  533. InsertMarkup(source, markupTarget);
  534. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  535. LyShine::StringType target;
  536. TextMarkup::CopyCharData(source, target);
  537. AZ_Assert(rawCharData == target, "Test failed");
  538. }
  539. {
  540. const LyShine::StringType rawCharData("& 1&");
  541. LyShine::StringType source = "&amp; 1&amp;";
  542. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1&amp;\" /></root>";
  543. LyShine::StringType markupTarget;
  544. InsertMarkup(source, markupTarget);
  545. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  546. LyShine::StringType target;
  547. TextMarkup::CopyCharData(source, target);
  548. AZ_Assert(rawCharData == target, "Test failed");
  549. }
  550. {
  551. const LyShine::StringType rawCharData("& 1& ");
  552. LyShine::StringType source = "&amp; 1&amp; ";
  553. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1&amp; \" /></root>";
  554. LyShine::StringType markupTarget;
  555. InsertMarkup(source, markupTarget);
  556. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  557. LyShine::StringType target;
  558. TextMarkup::CopyCharData(source, target);
  559. AZ_Assert(rawCharData == target, "Test failed");
  560. }
  561. {
  562. const LyShine::StringType rawCharData("&1 & ");
  563. LyShine::StringType source = "&amp;1 &amp; ";
  564. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp;1 &amp; \" /></root>";
  565. LyShine::StringType markupTarget;
  566. InsertMarkup(source, markupTarget);
  567. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  568. LyShine::StringType target;
  569. TextMarkup::CopyCharData(source, target);
  570. AZ_Assert(rawCharData == target, "Test failed");
  571. }
  572. {
  573. const LyShine::StringType rawCharData(" &1 & ");
  574. LyShine::StringType source = " &amp;1 &amp; ";
  575. LyShine::StringType expectedMarkup = "<root><ch value=\" &amp;1 &amp; \" /></root>";
  576. LyShine::StringType markupTarget;
  577. InsertMarkup(source, markupTarget);
  578. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  579. LyShine::StringType target;
  580. TextMarkup::CopyCharData(source, target);
  581. AZ_Assert(rawCharData == target, "Test failed");
  582. }
  583. {
  584. const LyShine::StringType rawCharData("& 1 &");
  585. LyShine::StringType source = "&amp; 1 &amp;";
  586. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; 1 &amp;\" /></root>";
  587. LyShine::StringType markupTarget;
  588. InsertMarkup(source, markupTarget);
  589. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  590. LyShine::StringType target;
  591. TextMarkup::CopyCharData(source, target);
  592. AZ_Assert(rawCharData == target, "Test failed");
  593. }
  594. {
  595. const LyShine::StringType rawCharData("& &");
  596. LyShine::StringType source = "&amp; &amp;";
  597. LyShine::StringType expectedMarkup = "<root><ch value=\"&amp; &amp;\" /></root>";
  598. LyShine::StringType markupTarget;
  599. InsertMarkup(source, markupTarget);
  600. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  601. LyShine::StringType target;
  602. TextMarkup::CopyCharData(source, target);
  603. AZ_Assert(rawCharData == target, "Test failed");
  604. }
  605. ///////////////////////////////////////////////////////////////
  606. // Pass-thru tests
  607. {
  608. LyShine::StringType source = " this is a test!";
  609. LyShine::StringType expectedMarkup = "<root><ch value=\" this is a test!\" /></root>";
  610. LyShine::StringType markupTarget;
  611. InsertMarkup(source, markupTarget);
  612. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  613. LyShine::StringType target;
  614. TextMarkup::CopyCharData(source, target);
  615. AZ_Assert(source == target, "Test failed");
  616. }
  617. {
  618. LyShine::StringType source = "this is a test! ";
  619. LyShine::StringType expectedMarkup = "<root><ch value=\"this is a test! \" /></root>";
  620. LyShine::StringType markupTarget;
  621. InsertMarkup(source, markupTarget);
  622. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  623. LyShine::StringType target;
  624. TextMarkup::CopyCharData(source, target);
  625. AZ_Assert(source == target, "Test failed");
  626. }
  627. {
  628. const LyShine::StringType rawCharData("this is a test!");
  629. LyShine::StringType source;
  630. LyShine::StringType expectedMarkup = "<root></root>";;
  631. LyShine::StringType markupTarget;
  632. InsertMarkup(source, markupTarget);
  633. AZ_Assert(expectedMarkup == markupTarget, "Test failed");
  634. LyShine::StringType target;
  635. TextMarkup::CopyCharData(rawCharData, target);
  636. AZ_Assert(rawCharData == target, "Test failed");
  637. }
  638. ///////////////////////////////////////////////////////////////
  639. // Bad xml tests
  640. {
  641. LyShine::StringType source = "<this <i>is</i> a <b>test</b>!";
  642. LyShine::StringType expectedMarkup = "<root><this <i>is</i> a <b>test</b>!</root>";
  643. LyShine::StringType target;
  644. TextMarkup::CopyCharData(source, target);
  645. AZ_Assert(source == target, "Test failed");
  646. }
  647. {
  648. LyShine::StringType source = "<<this <i>is</i> a <b>test</b>!";
  649. LyShine::StringType target;
  650. TextMarkup::CopyCharData(source, target);
  651. AZ_Assert(source == target, "Test failed");
  652. }
  653. {
  654. LyShine::StringType source = "this<badtag></badtag> <i>is</i> a <b>test</b>!";
  655. LyShine::StringType target;
  656. TextMarkup::CopyCharData(source, target);
  657. AZ_Assert(source == target, "Test failed");
  658. }
  659. {
  660. LyShine::StringType source = "< this <i>is</i> a <b>test</b>!";
  661. LyShine::StringType target;
  662. TextMarkup::CopyCharData(source, target);
  663. AZ_Assert(source == target, "Test failed");
  664. }
  665. {
  666. LyShine::StringType source = "<>this <i>is</i> a <b>test</b>!";
  667. LyShine::StringType target;
  668. TextMarkup::CopyCharData(source, target);
  669. AZ_Assert(source == target, "Test failed");
  670. }
  671. {
  672. LyShine::StringType source = "<font face=\"times\">this</font></b> <i>is</i> a <b>test</b>!";
  673. LyShine::StringType target;
  674. TextMarkup::CopyCharData(source, target);
  675. AZ_Assert(source == target, "Test failed");
  676. }
  677. AnchorTagTests();
  678. }
  679. #endif