1 31 32 package org.opencms.util; 33 34 import org.opencms.i18n.CmsEncoder; 35 36 import java.util.Arrays ; 37 import java.util.List ; 38 39 import junit.framework.TestCase; 40 41 49 public class TestCmsStringUtil extends TestCase { 50 51 56 public TestCmsStringUtil(String arg0) { 57 58 super(arg0); 59 } 60 61 64 public void testCmsContentReplacement() { 65 66 String content, result, context, search, replace; 67 68 content = "<html><body>\n" 69 + "See <a HREF=\"http://www.opencms.org/opencms/opencms/opencms/index.html\">\n" 70 + "http://www.opencms.org/opencms/opencms/opencms/index.html</a>\n" 71 + "or <a HREF=\"/opencms/opencms/opencms/index.html\">\n" 72 + "/opencms/opencms/opencms/index.html</a>\n" 73 + "<img SRC=\"/opencms/opencms/system/galleries/pics/test/test.gif\">\n" 74 + "<img SRC=\"http://www.othersite.org/opencms/opencms/system/galleries/pics/test/test.gif\">\n" 75 + "Some URL in the Text: http://www.thirdsite.org/opencms/opencms/some/url.html.\n" 76 + "Another URL in the Text: /opencms/opencms/some/url.html.\n" 77 + "</body></html>\n"; 78 79 result = "<html><body>\n" 80 + "See <a HREF=\"http://www.opencms.org/opencms/opencms/opencms/index.html\">\n" 81 + "http://www.opencms.org/opencms/opencms/opencms/index.html</a>\n" 82 + "or <a HREF=\"" 83 + CmsStringUtil.MACRO_OPENCMS_CONTEXT 84 + "/opencms/index.html\">\n" 85 + CmsStringUtil.MACRO_OPENCMS_CONTEXT 86 + "/opencms/index.html</a>\n" 87 + "<img SRC=\"" 88 + CmsStringUtil.MACRO_OPENCMS_CONTEXT 89 + "/system/galleries/pics/test/test.gif\">\n" 90 + "<img SRC=\"http://www.othersite.org/opencms/opencms/system/galleries/pics/test/test.gif\">\n" 91 + "Some URL in the Text: http://www.thirdsite.org/opencms/opencms/some/url.html.\n" 92 + "Another URL in the Text: " 93 + CmsStringUtil.MACRO_OPENCMS_CONTEXT 94 + "/some/url.html.\n" 95 + "</body></html>\n"; 96 97 context = "/opencms/opencms/"; 98 99 search = "([^\\w/])" + context; 101 replace = "$1" + CmsStringUtil.escapePattern(CmsStringUtil.MACRO_OPENCMS_CONTEXT) + "/"; 102 103 String test = CmsStringUtil.substitutePerl(content, search, replace, "g"); 104 105 System.err.println(this.getClass().getName() + ".testCmsContentReplacement():"); 106 System.err.println(test); 107 assertEquals(test, result); 108 109 test = CmsStringUtil.substituteContextPath(content, context); 110 assertEquals(test, result); 111 } 112 113 116 public void testCombined() { 117 118 String test; 119 String content = "<p>A paragraph with text...<img SRC=\"/opencms/opencms/empty.gif\"></p>\n<a HREF=\"/opencms/opencms/test.jpg\">"; 120 String search = "/opencms/opencms/"; 121 String replace = "${path}"; 122 test = CmsStringUtil.substitute(content, search, replace); 123 assertEquals( 124 test, 125 "<p>A paragraph with text...<img SRC=\"${path}empty.gif\"></p>\n<a HREF=\"${path}test.jpg\">"); 126 test = CmsStringUtil.substitute(test, replace, search); 127 assertEquals( 128 test, 129 "<p>A paragraph with text...<img SRC=\"/opencms/opencms/empty.gif\"></p>\n<a HREF=\"/opencms/opencms/test.jpg\">"); 130 } 131 132 135 public void testComplexPatternForImport() { 136 137 String content = "<cms:link>/pics/test.gif</cms:link> <img SRC=\"/pics/test.gif\"> script = '/pics/test.gif' <cms:link> /pics/othertest.gif </cms:link>\n" 138 + "<cms:link>/mymodule/pics/test.gif</cms:link> <img SRC=\"/mymodule/pics/test.gif\"> script = '/mymodule/pics/test.gif' <cms:link> /mymodule/system/galleries/pics/othertest.gif </cms:link>"; 139 String search = "([>\"']\\s*)/pics/"; 140 String replace = "$1/system/galleries/pics/"; 141 String test = CmsStringUtil.substitutePerl(content, search, replace, "g"); 142 assertEquals( 143 test, 144 "<cms:link>/system/galleries/pics/test.gif</cms:link> <img SRC=\"/system/galleries/pics/test.gif\"> script = '/system/galleries/pics/test.gif' <cms:link> /system/galleries/pics/othertest.gif </cms:link>\n" 145 + "<cms:link>/mymodule/pics/test.gif</cms:link> <img SRC=\"/mymodule/pics/test.gif\"> script = '/mymodule/pics/test.gif' <cms:link> /mymodule/system/galleries/pics/othertest.gif </cms:link>"); 146 } 147 148 151 public void testEscapePattern() { 152 153 String test; 154 test = CmsStringUtil.escapePattern("/opencms/opencms"); 155 assertEquals(test, "\\/opencms\\/opencms"); 156 test = CmsStringUtil.escapePattern("/opencms/$"); 157 assertEquals(test, "\\/opencms\\/\\$"); 158 } 159 160 163 public void testExtractHtmlBody() { 164 165 String content, result; 166 String innerContent = "This is body content in the body\n<h1>A headline</h1>\nSome text in the body\n"; 167 168 content = "<html><body>" + innerContent + "</body></html>"; 169 result = CmsStringUtil.extractHtmlBody(content); 170 assertEquals(result, innerContent); 171 172 content = "<html><body style='css' background-color:#ffffff>" + innerContent + "</body></html>"; 173 result = CmsStringUtil.extractHtmlBody(content); 174 assertEquals(result, innerContent); 175 176 content = "<html>\n<title>Test</title>\n<body style='css' background-color:#ffffff>" 177 + innerContent 178 + "</body>\n</html>"; 179 result = CmsStringUtil.extractHtmlBody(content); 180 assertEquals(result, innerContent); 181 182 content = "<html>< body style='css' background-color:#ffffff>" + innerContent + "</ BODY>"; 183 result = CmsStringUtil.extractHtmlBody(content); 184 assertEquals(result, innerContent); 185 186 content = "<BODY>" + innerContent + "</boDY></html></body><body>somemoretext</BODY>"; 187 result = CmsStringUtil.extractHtmlBody(content); 188 assertEquals(result, innerContent); 189 190 content = innerContent + "</boDY></html>"; 191 result = CmsStringUtil.extractHtmlBody(content); 192 assertEquals(result, innerContent); 193 194 content = "<html><BODY>" + innerContent; 195 result = CmsStringUtil.extractHtmlBody(content); 196 assertEquals(result, innerContent); 197 198 content = innerContent; 199 result = CmsStringUtil.extractHtmlBody(content); 200 assertEquals(result, innerContent); 201 } 202 203 206 public void testExtractXmlEncoding() { 207 208 String xml, result; 209 210 xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" 211 + "<!DOCTYPE opencms SYSTEM" 212 + "\"http://www.opencms.org/dtd/6.0/opencms-importexport.dtd\">\n" 213 + "<opencms/>"; 214 215 result = CmsStringUtil.extractXmlEncoding(xml); 216 assertEquals(result, CmsEncoder.ENCODING_UTF_8); 217 218 xml = "<?xml version=\"1.0\" encoding='ISO-8859-1'?>\n" + "<opencms/>"; 219 220 result = CmsStringUtil.extractXmlEncoding(xml); 221 assertEquals(result, "ISO-8859-1"); 222 } 223 224 227 public void testFormatResourceName() { 228 229 String test; 230 test = "/xmlcontentdemo/list.jsp"; 231 assertEquals("/.../list.jsp", CmsStringUtil.formatResourceName(test, 10)); 232 test = "/xmlcontentdemo/list.jsp"; 233 assertEquals("/xmlcontentdemo/list.jsp", CmsStringUtil.formatResourceName(test, 25)); 234 test = "/averylongresourcename.jsp"; 235 assertEquals("/averylongresourcename.jsp", CmsStringUtil.formatResourceName(test, 25)); 236 test = "/folder1/folder2/averylongresourcename.jsp"; 237 assertEquals("/.../averylongresourcename.jsp", CmsStringUtil.formatResourceName(test, 25)); 238 test = "/myfolder/subfolder/index.html"; 239 assertEquals("/.../subfolder/index.html", CmsStringUtil.formatResourceName(test, 21)); 240 test = "/myfolder/subfolder/subsubfolder/index.html"; 241 assertEquals("/.../subfolder/subsubfolder/index.html", CmsStringUtil.formatResourceName(test, 34)); 242 assertEquals("/.../subsubfolder/index.html", CmsStringUtil.formatResourceName(test, 25)); 243 assertEquals("/.../index.html", CmsStringUtil.formatResourceName(test, 21)); 244 test = "/demopages/search-demo/example-documents/"; 245 assertEquals("/.../search-demo/example-documents/", CmsStringUtil.formatResourceName(test, 39)); 246 assertEquals("/demopages/search-demo/example-documents/", CmsStringUtil.formatResourceName(test, 40)); 247 } 248 249 252 public void testLine() { 253 254 String content = "<edittemplate><![CDATA[<H4><IMG style=\"WIDTH: 77px; HEIGHT: 77px\" alt=\"Homepage animation\" hspace=8 SRC=\"/opencms/opencms/pics/alkacon/x_hp_ani04.gif\" align=right vspace=8 border=0><IMG style=\"WIDTH: 307px; HEIGHT: 52px\" alt=\"Homepage animation\" hspace=0 SRC=\"/opencms/opencms/pics/alkacon/x_hp_ani05.gif\" vspace=8 border=0></H4>\n<P>Alkacon Software provides software development services for the digital business. We are specialized in web - based content management solutions build on open source Java Software. </P>\n<P>Alkacon Software is a major contributor to the <A HREF=\"http://www.opencms.org\" target=_blank>OpenCms Project</A>. OpenCms is an enterprise - ready content management platform build in Java from open source components. OpenCms can easily be deployed on almost any existing IT infrastructure and provides powerful features especially suited for large enterprise internet or intranet applications. </P>\n<P>Alkacon Software offers standard <A HREF=\"/alkacon/en/services/opencms/index.html\" target=_self>service and support </A>packages for OpenCms, providing an optional layer of security and convenience often required for mission critical OpenCms installations.</P>\n<UL>\n<LI><IMG style=\"WIDTH: 125px; HEIGHT: 34px\" alt=OpenCms hspace=3 SRC=\"/opencms/opencms/pics/alkacon/logo_opencms_125.gif\" align=right border=0>Learn more about our <A HREF=\"/alkacon/en/services/index.html\" target=_self>Services</A> \n<LI>Subscribe to our <A HREF=\"/alkacon/en/company/contact/newsletter.html\" target=_self>Company Newsletter</A> \n<LI>Questions? <A HREF=\"/alkacon/en/company/contact/index.html\" target=_self>Contact us</A></LI></UL>\n<P> </P>]]></edittemplate>"; 255 String search = "/pics/"; 256 String replace = "/system/galleries/pics/"; 257 String test = CmsStringUtil.substitute(content, search, replace); 258 assertEquals( 259 test, 260 "<edittemplate><![CDATA[<H4><IMG style=\"WIDTH: 77px; HEIGHT: 77px\" alt=\"Homepage animation\" hspace=8 SRC=\"/opencms/opencms/system/galleries/pics/alkacon/x_hp_ani04.gif\" align=right vspace=8 border=0><IMG style=\"WIDTH: 307px; HEIGHT: 52px\" alt=\"Homepage animation\" hspace=0 SRC=\"/opencms/opencms/system/galleries/pics/alkacon/x_hp_ani05.gif\" vspace=8 border=0></H4>\n<P>Alkacon Software provides software development services for the digital business. We are specialized in web - based content management solutions build on open source Java Software. </P>\n<P>Alkacon Software is a major contributor to the <A HREF=\"http://www.opencms.org\" target=_blank>OpenCms Project</A>. OpenCms is an enterprise - ready content management platform build in Java from open source components. OpenCms can easily be deployed on almost any existing IT infrastructure and provides powerful features especially suited for large enterprise internet or intranet applications. </P>\n<P>Alkacon Software offers standard <A HREF=\"/alkacon/en/services/opencms/index.html\" target=_self>service and support </A>packages for OpenCms, providing an optional layer of security and convenience often required for mission critical OpenCms installations.</P>\n<UL>\n<LI><IMG style=\"WIDTH: 125px; HEIGHT: 34px\" alt=OpenCms hspace=3 SRC=\"/opencms/opencms/system/galleries/pics/alkacon/logo_opencms_125.gif\" align=right border=0>Learn more about our <A HREF=\"/alkacon/en/services/index.html\" target=_self>Services</A> \n<LI>Subscribe to our <A HREF=\"/alkacon/en/company/contact/newsletter.html\" target=_self>Company Newsletter</A> \n<LI>Questions? <A HREF=\"/alkacon/en/company/contact/index.html\" target=_self>Contact us</A></LI></UL>\n<P> </P>]]></edittemplate>"); 261 } 262 263 266 public void testSplitCharDelimiter() { 267 268 String toSplit; 269 char delimChar = '/'; 270 String [] arrayResult; 271 List listResult; 272 273 toSplit = "/system/workplace/admin/searchindex/"; 275 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 276 assertEquals(4, arrayResult.length); 277 assertEquals("system", arrayResult[0]); 278 assertEquals("workplace", arrayResult[1]); 279 assertEquals("admin", arrayResult[2]); 280 assertEquals("searchindex", arrayResult[3]); 281 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 282 assertEquals(Arrays.asList(arrayResult), listResult); 283 284 toSplit = ""; 286 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 287 assertEquals(0, arrayResult.length); 288 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 289 assertEquals(Arrays.asList(arrayResult), listResult); 290 291 toSplit = " "; 293 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 294 assertEquals(1, arrayResult.length); 295 assertEquals(toSplit, arrayResult[0]); 296 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 297 assertEquals(Arrays.asList(arrayResult), listResult); 298 299 listResult = CmsStringUtil.splitAsList(toSplit, delimChar, true); 301 assertEquals(1, listResult.size()); 302 assertEquals("", listResult.get(0)); 303 304 toSplit = "/"; 306 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 307 assertEquals(0, arrayResult.length); 308 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 309 assertEquals(Arrays.asList(arrayResult), listResult); 310 311 toSplit = "//"; 313 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 314 assertEquals(1, arrayResult.length); 315 assertEquals("", arrayResult[0]); 316 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 317 assertEquals(Arrays.asList(arrayResult), listResult); 318 319 toSplit = "/token"; 321 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 322 assertEquals(1, arrayResult.length); 323 assertEquals("token", arrayResult[0]); 324 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 325 assertEquals(Arrays.asList(arrayResult), listResult); 326 327 toSplit = "token/"; 329 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 330 assertEquals(1, arrayResult.length); 331 assertEquals("token", arrayResult[0]); 332 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 333 assertEquals(Arrays.asList(arrayResult), listResult); 334 335 toSplit = "///"; 337 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 338 assertEquals(2, arrayResult.length); 339 assertEquals("", arrayResult[0]); 340 assertEquals("", arrayResult[1]); 341 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 342 assertEquals(Arrays.asList(arrayResult), listResult); 343 344 toSplit = "/a // b/ c /"; 345 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); 346 assertEquals(4, arrayResult.length); 347 assertEquals("a ", arrayResult[0]); 348 assertEquals("", arrayResult[1]); 349 assertEquals(" b", arrayResult[2]); 350 assertEquals(" c ", arrayResult[3]); 351 listResult = CmsStringUtil.splitAsList(toSplit, delimChar); 352 assertEquals(Arrays.asList(arrayResult), listResult); 353 354 listResult = CmsStringUtil.splitAsList(toSplit, delimChar, true); 356 assertEquals(4, listResult.size()); 357 assertEquals("a", listResult.get(0)); 358 assertEquals("", listResult.get(1)); 359 assertEquals("b", listResult.get(2)); 360 assertEquals("c", listResult.get(3)); 361 } 362 363 366 public void testSplitStringDelimiter() { 367 368 String toSplit; 369 String delimString = "/"; 370 String [] arrayResult; 371 List listResult; 372 373 toSplit = "/system/workplace/admin/searchindex/"; 374 375 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 376 assertEquals(4, arrayResult.length); 377 assertEquals("system", arrayResult[0]); 378 assertEquals("workplace", arrayResult[1]); 379 assertEquals("admin", arrayResult[2]); 380 assertEquals("searchindex", arrayResult[3]); 381 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 382 assertEquals(Arrays.asList(arrayResult), listResult); 383 384 toSplit = ""; 386 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 387 assertEquals(0, arrayResult.length); 388 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 389 assertEquals(Arrays.asList(arrayResult), listResult); 390 391 toSplit = " "; 393 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 394 assertEquals(1, arrayResult.length); 395 assertEquals(toSplit, arrayResult[0]); 396 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 397 assertEquals(Arrays.asList(arrayResult), listResult); 398 399 listResult = CmsStringUtil.splitAsList(toSplit, delimString, true); 401 assertEquals(1, listResult.size()); 402 assertEquals("", listResult.get(0)); 403 404 toSplit = "/"; 406 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 407 assertEquals(0, arrayResult.length); 408 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 409 assertEquals(Arrays.asList(arrayResult), listResult); 410 411 toSplit = "//"; 413 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 414 assertEquals(1, arrayResult.length); 415 assertEquals("", arrayResult[0]); 416 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 417 assertEquals(Arrays.asList(arrayResult), listResult); 418 419 toSplit = "/token"; 421 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 422 assertEquals(1, arrayResult.length); 423 assertEquals("token", arrayResult[0]); 424 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 425 assertEquals(Arrays.asList(arrayResult), listResult); 426 427 toSplit = "token/"; 429 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 430 assertEquals(1, arrayResult.length); 431 assertEquals("token", arrayResult[0]); 432 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 433 assertEquals(Arrays.asList(arrayResult), listResult); 434 435 toSplit = "///"; 437 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 438 assertEquals(2, arrayResult.length); 439 assertEquals("", arrayResult[0]); 440 assertEquals("", arrayResult[1]); 441 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 442 assertEquals(Arrays.asList(arrayResult), listResult); 443 444 toSplit = "/a // b/ c /"; 445 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 446 assertEquals(4, arrayResult.length); 447 assertEquals("a ", arrayResult[0]); 448 assertEquals("", arrayResult[1]); 449 assertEquals(" b", arrayResult[2]); 450 assertEquals(" c ", arrayResult[3]); 451 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 452 assertEquals(Arrays.asList(arrayResult), listResult); 453 454 listResult = CmsStringUtil.splitAsList(toSplit, delimString, true); 456 assertEquals(4, listResult.size()); 457 assertEquals("a", listResult.get(0)); 458 assertEquals("", listResult.get(1)); 459 assertEquals("b", listResult.get(2)); 460 assertEquals("c", listResult.get(3)); 461 462 464 delimString = ",,"; 465 toSplit = ",,system,,workplace,,admin,,searchindex,,"; 466 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 467 assertEquals(4, arrayResult.length); 468 assertEquals("system", arrayResult[0]); 469 assertEquals("workplace", arrayResult[1]); 470 assertEquals("admin", arrayResult[2]); 471 assertEquals("searchindex", arrayResult[3]); 472 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 473 assertEquals(Arrays.asList(arrayResult), listResult); 474 475 toSplit = ""; 477 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 478 assertEquals(0, arrayResult.length); 479 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 480 assertEquals(Arrays.asList(arrayResult), listResult); 481 482 toSplit = " "; 484 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 485 assertEquals(1, arrayResult.length); 486 assertEquals(toSplit, arrayResult[0]); 487 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 488 assertEquals(Arrays.asList(arrayResult), listResult); 489 490 toSplit = ",,"; 492 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 493 assertEquals(0, arrayResult.length); 494 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 495 assertEquals(Arrays.asList(arrayResult), listResult); 496 497 toSplit = ",,,,"; 499 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 500 assertEquals(1, arrayResult.length); 501 assertEquals("", arrayResult[0]); 502 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 503 assertEquals(Arrays.asList(arrayResult), listResult); 504 505 toSplit = ",,token"; 507 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 508 assertEquals(1, arrayResult.length); 509 assertEquals("token", arrayResult[0]); 510 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 511 assertEquals(Arrays.asList(arrayResult), listResult); 512 513 toSplit = "token,,"; 515 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 516 assertEquals(1, arrayResult.length); 517 assertEquals("token", arrayResult[0]); 518 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 519 assertEquals(Arrays.asList(arrayResult), listResult); 520 521 toSplit = ",,,,,,"; 523 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 524 assertEquals(2, arrayResult.length); 525 assertEquals("", arrayResult[0]); 526 assertEquals("", arrayResult[1]); 527 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 528 assertEquals(Arrays.asList(arrayResult), listResult); 529 530 toSplit = ",,a, aber nicht b,,,,b, aber nicht c,,c, but not a,,"; 531 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 532 assertEquals(4, arrayResult.length); 533 assertEquals("a, aber nicht b", arrayResult[0]); 534 assertEquals("", arrayResult[1]); 535 assertEquals("b, aber nicht c", arrayResult[2]); 536 assertEquals("c, but not a", arrayResult[3]); 537 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 538 assertEquals(Arrays.asList(arrayResult), listResult); 539 540 delimString = "/delim/"; 541 toSplit = "/delim fake at start/delim//not a delim//delim//delim//delim fake at end"; 542 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 543 assertEquals(4, arrayResult.length); 544 assertEquals("/delim fake at start", arrayResult[0]); 545 assertEquals("/not a delim/", arrayResult[1]); 546 assertEquals("", arrayResult[2]); 547 assertEquals("/delim fake at end", arrayResult[3]); 548 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 549 assertEquals(Arrays.asList(arrayResult), listResult); 550 551 toSplit = "/delim fake at start/delim//not a delim//delim//delim//delim"; 552 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 553 assertEquals(4, arrayResult.length); 554 assertEquals("/delim fake at start", arrayResult[0]); 555 assertEquals("/not a delim/", arrayResult[1]); 556 assertEquals("", arrayResult[2]); 557 assertEquals("/delim", arrayResult[3]); 558 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 559 assertEquals(Arrays.asList(arrayResult), listResult); 560 561 toSplit = "/delim//delim fake at start/delim//not a delim//delim//delim//delim fake at end/delim/"; 562 arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); 563 assertEquals(4, arrayResult.length); 564 assertEquals("/delim fake at start", arrayResult[0]); 565 assertEquals("/not a delim/", arrayResult[1]); 566 assertEquals("", arrayResult[2]); 567 assertEquals("/delim fake at end", arrayResult[3]); 568 listResult = CmsStringUtil.splitAsList(toSplit, delimString); 569 assertEquals(Arrays.asList(arrayResult), listResult); 570 } 571 572 575 public void testSubstitute() { 576 577 String test, result; 578 579 String content = "<a HREF=\"/opencms/opencms/test.jpg\">"; 580 String search = "/opencms/opencms/"; 581 String replace = "\\${path}"; 582 583 test = CmsStringUtil.substitute(content, search, replace); 584 System.out.println(test); 585 assertEquals(test, "<a HREF=\"\\${path}test.jpg\">"); 586 587 test = CmsStringUtil.substitute(test, replace, search); 588 assertEquals(test, "<a HREF=\"/opencms/opencms/test.jpg\">"); 589 590 content = "[0-9]$1/[^a]|/([}>\"'\\[]\\s*)/pics/"; 591 result = "[0-9]$1/[^a]|/([}>\"'\\[]\\s*)/pucs/"; 592 test = CmsStringUtil.substitute(content, "i", "u"); 593 assertEquals(test, result); 594 595 content = "/delim//delim fake at start/delim//not a delim//delim//delim//delim fake at end/delim/"; 596 result = "REPLACED!/delim fake at startREPLACED!/not a delim/REPLACED!REPLACED!/delim fake at endREPLACED!"; 597 test = CmsStringUtil.substitute(content, "/delim/", "REPLACED!"); 598 assertEquals(test, result); 599 } 600 } | Popular Tags |