/core/externals/update-engine/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTMLTest.m

http://macfuse.googlecode.com/ · Objective C · 242 lines · 191 code · 32 blank · 19 comment · 0 complexity · 5bf47d364a2938da6bab5753df1b1f89 MD5 · raw file

  1. //
  2. // GTMNSString+HTMLTest.m
  3. //
  4. // Copyright 2005-2008 Google Inc.
  5. //
  6. // Licensed under the Apache License, Version 2.0 (the "License"); you may not
  7. // use this file except in compliance with the License. You may obtain a copy
  8. // of the License at
  9. //
  10. // http://www.apache.org/licenses/LICENSE-2.0
  11. //
  12. // Unless required by applicable law or agreed to in writing, software
  13. // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  14. // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  15. // License for the specific language governing permissions and limitations under
  16. // the License.
  17. //
  18. #import "GTMSenTestCase.h"
  19. #import "GTMNSString+HTML.h"
  20. @interface GTMNSString_HTMLTest : GTMTestCase
  21. @end
  22. @implementation GTMNSString_HTMLTest
  23. - (void)testStringByEscapingHTML {
  24. unichar chars[] =
  25. { 34, 38, 39, 60, 62, 338, 339, 352, 353, 376, 710, 732,
  26. 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218,
  27. 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, };
  28. NSString *string1 = [NSString stringWithCharacters:chars
  29. length:sizeof(chars) / sizeof(unichar)];
  30. NSString *string2 =
  31. @""&'<>ŒœŠšŸ"
  32. "ˆ˜   ‌‍‎‏–"
  33. "—‘’‚“”„†‡"
  34. "‰‹›€";
  35. STAssertEqualObjects([string1 gtm_stringByEscapingForHTML],
  36. string2,
  37. @"HTML escaping failed");
  38. STAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForHTML],
  39. @"&lt;this &amp; that&gt;",
  40. @"HTML escaping failed");
  41. NSString *string = [NSString stringWithUTF8String:"???&????????"];
  42. NSString *escapeStr = [NSString stringWithUTF8String:"???&amp;????????"];
  43. STAssertEqualObjects([string gtm_stringByEscapingForHTML],
  44. escapeStr,
  45. @"HTML escaping failed");
  46. string = [NSString stringWithUTF8String:"abc?1?<?def&"];
  47. STAssertEqualObjects([string gtm_stringByEscapingForHTML],
  48. [NSString stringWithUTF8String:"abc?1?&lt;?def&amp;"],
  49. @"HTML escaping failed");
  50. // test empty string
  51. STAssertEqualObjects([@"" gtm_stringByEscapingForHTML], @"", nil);
  52. } // testStringByEscapingHTML
  53. - (void)testStringByEscapingAsciiHTML {
  54. unichar chars[] =
  55. { 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
  56. 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
  57. 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
  58. 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
  59. 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
  60. 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
  61. 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
  62. 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
  63. 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
  64. 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
  65. 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
  66. 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
  67. 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
  68. 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
  69. 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
  70. 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
  71. 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
  72. 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 };
  73. NSString *string1 = [NSString stringWithCharacters:chars
  74. length:sizeof(chars) / sizeof(unichar)];
  75. NSString *string2 =
  76. @"&quot;&amp;&apos;&lt;&gt;&nbsp;&iexcl;&cent;&pound;&curren;&yen;"
  77. "&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;"
  78. "&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;"
  79. "&ordm;&raquo;&frac14;&frac12;&frac34;&iquest;&Agrave;&Aacute;"
  80. "&Acirc;&Atilde;&Auml;&Aring;&AElig;&Ccedil;&Egrave;&Eacute;"
  81. "&Ecirc;&Euml;&Igrave;&Iacute;&Icirc;&Iuml;&ETH;&Ntilde;&Ograve;"
  82. "&Oacute;&Ocirc;&Otilde;&Ouml;&times;&Oslash;&Ugrave;&Uacute;"
  83. "&Ucirc;&Uuml;&Yacute;&THORN;&szlig;&agrave;&aacute;&acirc;&atilde;"
  84. "&auml;&aring;&aelig;&ccedil;&egrave;&eacute;&ecirc;&euml;&igrave;"
  85. "&iacute;&icirc;&iuml;&eth;&ntilde;&ograve;&oacute;&ocirc;&otilde;"
  86. "&ouml;&divide;&oslash;&ugrave;&uacute;&ucirc;&uuml;&yacute;&thorn;"
  87. "&yuml;&OElig;&oelig;&Scaron;&scaron;&Yuml;&fnof;&circ;&tilde;"
  88. "&Alpha;&Beta;&Gamma;&Delta;&Epsilon;&Zeta;&Eta;&Theta;&Iota;"
  89. "&Kappa;&Lambda;&Mu;&Nu;&Xi;&Omicron;&Pi;&Rho;&Sigma;&Tau;"
  90. "&Upsilon;&Phi;&Chi;&Psi;&Omega;&alpha;&beta;&gamma;&delta;"
  91. "&epsilon;&zeta;&eta;&theta;&iota;&kappa;&lambda;&mu;&nu;&xi;"
  92. "&omicron;&pi;&rho;&sigmaf;&sigma;&tau;&upsilon;&phi;&chi;&psi;"
  93. "&omega;&thetasym;&upsih;&piv;&ensp;&emsp;&thinsp;&zwnj;&zwj;"
  94. "&lrm;&rlm;&ndash;&mdash;&lsquo;&rsquo;&sbquo;&ldquo;&rdquo;"
  95. "&bdquo;&dagger;&Dagger;&bull;&hellip;&permil;&prime;&Prime;"
  96. "&lsaquo;&rsaquo;&oline;&frasl;&euro;&weierp;&image;&real;&trade;"
  97. "&alefsym;&larr;&uarr;&rarr;&darr;&harr;&crarr;&lArr;&uArr;&rArr;"
  98. "&dArr;&hArr;&forall;&part;&exist;&empty;&nabla;&isin;&notin;&ni;"
  99. "&prod;&sum;&minus;&lowast;&radic;&prop;&infin;&ang;&and;&or;"
  100. "&cap;&cup;&int;&there4;&sim;&cong;&asymp;&ne;&equiv;&le;&ge;"
  101. "&sub;&sup;&nsub;&sube;&supe;&oplus;&otimes;&perp;&sdot;&lceil;"
  102. "&rceil;&lfloor;&rfloor;&lang;&rang;&loz;&spades;&clubs;&hearts;"
  103. "&diams;";
  104. STAssertEqualObjects([string1 gtm_stringByEscapingForAsciiHTML],
  105. string2,
  106. @"HTML escaping failed");
  107. STAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForAsciiHTML],
  108. @"&lt;this &amp; that&gt;",
  109. @"HTML escaping failed");
  110. NSString *string = [NSString stringWithUTF8String:"???????????"];
  111. STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
  112. @"&#12497;&#12531;&#12539;&#12489;&#12539;&#12459;"
  113. "&#12531;&#12497;&#12540;&#12491;&#12517;",
  114. @"HTML escaping failed");
  115. // Mix in some right - to left
  116. string = [NSString stringWithUTF8String:"abc?1?<?def&"];
  117. STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
  118. @"abc&#1575;1&#1576;&lt;&#1578;def&amp;",
  119. @"HTML escaping failed");
  120. } // stringByEscapingAsciiHTML
  121. - (void)testStringByUnescapingHTML {
  122. NSString *string1 =
  123. @"&quot;&amp;&apos;&lt;&gt;&nbsp;&iexcl;&cent;&pound;&curren;&yen;"
  124. "&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;"
  125. "&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;"
  126. "&ordm;&raquo;&frac14;&frac12;&frac34;&iquest;&Agrave;&Aacute;"
  127. "&Acirc;&Atilde;&Auml;&Aring;&AElig;&Ccedil;&Egrave;&Eacute;"
  128. "&Ecirc;&Euml;&Igrave;&Iacute;&Icirc;&Iuml;&ETH;&Ntilde;&Ograve;"
  129. "&Oacute;&Ocirc;&Otilde;&Ouml;&times;&Oslash;&Ugrave;&Uacute;"
  130. "&Ucirc;&Uuml;&Yacute;&THORN;&szlig;&agrave;&aacute;&acirc;&atilde;"
  131. "&auml;&aring;&aelig;&ccedil;&egrave;&eacute;&ecirc;&euml;&igrave;"
  132. "&iacute;&icirc;&iuml;&eth;&ntilde;&ograve;&oacute;&ocirc;&otilde;"
  133. "&ouml;&divide;&oslash;&ugrave;&uacute;&ucirc;&uuml;&yacute;&thorn;"
  134. "&yuml;&OElig;&oelig;&Scaron;&scaron;&Yuml;&fnof;&circ;&tilde;"
  135. "&Alpha;&Beta;&Gamma;&Delta;&Epsilon;&Zeta;&Eta;&Theta;&Iota;"
  136. "&Kappa;&Lambda;&Mu;&Nu;&Xi;&Omicron;&Pi;&Rho;&Sigma;&Tau;"
  137. "&Upsilon;&Phi;&Chi;&Psi;&Omega;&alpha;&beta;&gamma;&delta;"
  138. "&epsilon;&zeta;&eta;&theta;&iota;&kappa;&lambda;&mu;&nu;&xi;"
  139. "&omicron;&pi;&rho;&sigmaf;&sigma;&tau;&upsilon;&phi;&chi;&psi;"
  140. "&omega;&thetasym;&upsih;&piv;&ensp;&emsp;&thinsp;&zwnj;&zwj;"
  141. "&lrm;&rlm;&ndash;&mdash;&lsquo;&rsquo;&sbquo;&ldquo;&rdquo;"
  142. "&bdquo;&dagger;&Dagger;&bull;&hellip;&permil;&prime;&Prime;"
  143. "&lsaquo;&rsaquo;&oline;&frasl;&euro;&weierp;&image;&real;&trade;"
  144. "&alefsym;&larr;&uarr;&rarr;&darr;&harr;&crarr;&lArr;&uArr;&rArr;"
  145. "&dArr;&hArr;&forall;&part;&exist;&empty;&nabla;&isin;&notin;&ni;"
  146. "&prod;&sum;&minus;&lowast;&radic;&prop;&infin;&ang;&and;&or;"
  147. "&cap;&cup;&int;&there4;&sim;&cong;&asymp;&ne;&equiv;&le;&ge;"
  148. "&sub;&sup;&nsub;&sube;&supe;&oplus;&otimes;&perp;&sdot;&lceil;"
  149. "&rceil;&lfloor;&rfloor;&lang;&rang;&loz;&spades;&clubs;&hearts;"
  150. "&diams;";
  151. unichar chars[] =
  152. { 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
  153. 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
  154. 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
  155. 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
  156. 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
  157. 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
  158. 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
  159. 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
  160. 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
  161. 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
  162. 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
  163. 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
  164. 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
  165. 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
  166. 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
  167. 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
  168. 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
  169. 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 };
  170. NSString *string2 = [NSString stringWithCharacters:chars
  171. length:sizeof(chars) / sizeof(unichar)];
  172. STAssertEqualObjects([string1 gtm_stringByUnescapingFromHTML],
  173. string2,
  174. @"HTML unescaping failed");
  175. STAssertEqualObjects([@"&#65;&#x42;&#X43;" gtm_stringByUnescapingFromHTML],
  176. @"ABC", @"HTML unescaping failed");
  177. STAssertEqualObjects([@"" gtm_stringByUnescapingFromHTML],
  178. @"", @"HTML unescaping failed");
  179. STAssertEqualObjects([@"&#65;&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
  180. @"A&Bang;C", @"HTML unescaping failed");
  181. STAssertEqualObjects([@"&#65&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
  182. @"&#65&Bang;C", @"HTML unescaping failed");
  183. STAssertEqualObjects([@"&#65;&Bang;&#X43" gtm_stringByUnescapingFromHTML],
  184. @"A&Bang;&#X43", @"HTML unescaping failed");
  185. STAssertEqualObjects([@"&#65A;" gtm_stringByUnescapingFromHTML],
  186. @"&#65A;", @"HTML unescaping failed");
  187. STAssertEqualObjects([@"&" gtm_stringByUnescapingFromHTML],
  188. @"&", @"HTML unescaping failed");
  189. STAssertEqualObjects([@"&;" gtm_stringByUnescapingFromHTML],
  190. @"&;", @"HTML unescaping failed");
  191. STAssertEqualObjects([@"&x;" gtm_stringByUnescapingFromHTML],
  192. @"&x;", @"HTML unescaping failed");
  193. STAssertEqualObjects([@"&X;" gtm_stringByUnescapingFromHTML],
  194. @"&X;", @"HTML unescaping failed");
  195. STAssertEqualObjects([@";" gtm_stringByUnescapingFromHTML],
  196. @";", @"HTML unescaping failed");
  197. STAssertEqualObjects([@"&lt;this &amp; that&gt;" gtm_stringByUnescapingFromHTML],
  198. @"<this & that>", @"HTML unescaping failed");
  199. } // testStringByUnescapingHTML
  200. - (void)testStringRoundtrippingEscapedHTML {
  201. NSString *string = [NSString stringWithUTF8String:"This test Š™Ž????"];
  202. STAssertEqualObjects(string,
  203. [[string gtm_stringByEscapingForHTML] gtm_stringByUnescapingFromHTML],
  204. @"HTML Roundtripping failed");
  205. string = [NSString stringWithUTF8String:"This test Š™Ž????"];
  206. STAssertEqualObjects(string,
  207. [[string gtm_stringByEscapingForAsciiHTML] gtm_stringByUnescapingFromHTML],
  208. @"HTML Roundtripping failed");
  209. }
  210. @end