001 /** 002 * Copyright 2005-2011 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package edu.samplu.travel.krad.test; 017 018 import edu.samplu.common.WebDriverLegacyITBase; 019 import org.junit.Assert; 020 import org.junit.Test; 021 022 /** 023 * tests that regex validation works as expected on input fields where it is configured 024 * 025 * @author Kuali Rice Team (rice.collab@kuali.org) 026 */ 027 public class UIFComponentValidationRegexPatternLegacyIT extends WebDriverLegacyITBase { 028 029 @Override 030 public String getTestUrl() { 031 return "/kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91"; 032 } 033 034 @Test 035 public void testValidCharacterConstraint() throws Exception { 036 037 /* 038 * Timestamp pattern validation message says it allows years from 1900 - 2099 039 * In fact it also allows 2999 as the upper limit. This needs to be sorted out. 040 * Test failing this condition is commented in the below code section for Timestamp Validation. Once resolved can be uncommented 041 * 042 */ 043 044 waitAndClickByXpath("//a[contains(text(),'Validation - Regex')]"); 045 046 //---------------------------------------------Fixed Point------------------------------// 047 048 049 waitAndTypeByName("field50", "123.123"); 050 fireEvent("field50","blur"); 051 validateErrorImage(true); 052 clearTextByName("field50"); 053 054 waitAndTypeByXpath("//input[@name='field50']", "1234.4"); 055 fireEvent("field50","blur"); 056 validateErrorImage(true); 057 clearTextByName("field50"); 058 059 060 waitAndTypeByXpath("//input[@name='field50']", "1234.434"); 061 fireEvent("field50","blur"); 062 validateErrorImage(true); 063 clearTextByName("field50"); 064 065 waitAndTypeByXpath("//input[@name='field50']", "123.67"); 066 fireEvent("field50","blur"); 067 validateErrorImage(false); 068 clearTextByName("field50"); 069 070 //---------------------------------------------Floating Point------------------------------// 071 072 waitAndTypeByXpath("//input[@name='field51']", "127."); 073 fireEvent("field51","blur"); 074 validateErrorImage(true); 075 clearTextByName("field51"); 076 077 waitAndTypeByXpath("//input[@name='field51']", "1234()98"); 078 fireEvent("field51","blur"); 079 validateErrorImage(true); 080 clearTextByName("field51"); 081 082 waitAndTypeByXpath("//input[@name='field51']", "-123.67"); 083 fireEvent("field51","blur"); 084 validateErrorImage(false); 085 clearTextByName("field51"); 086 087 //---------------------------------------------Integer Pattern constraint------------------------------// 088 089 waitAndTypeByXpath("//input[@name='field77']", "127."); 090 fireEvent("field77","blur"); 091 validateErrorImage(true); 092 clearTextByName("field77"); 093 094 waitAndTypeByXpath("//input[@name='field77']", "1234.4123"); 095 fireEvent("field77","blur"); 096 validateErrorImage(true); 097 clearTextByName("field77"); 098 099 waitAndTypeByXpath("//input[@name='field77']", "123E123"); 100 fireEvent("field77", "blur"); 101 validateErrorImage(true); 102 clearTextByName("field77"); 103 104 waitAndTypeByXpath("//input[@name='field77']", "-123"); 105 fireEvent("field77", "blur"); 106 validateErrorImage(false); 107 clearTextByName("field77"); 108 109 //---------------------------------------------Phone Text------------------------------// 110 waitAndTypeByXpath("//input[@name='field52']", "1271231234"); 111 fireEvent("field52", "blur"); 112 validateErrorImage(true); 113 clearTextByName("field52"); 114 115 waitAndTypeByXpath("//input[@name='field52']", "123-123-123"); 116 fireEvent("field52", "blur"); 117 validateErrorImage(true); 118 clearTextByName("field52"); 119 120 waitAndTypeByXpath("//input[@name='field52']", "12-12-123445"); 121 fireEvent("field52", "blur"); 122 validateErrorImage(true); 123 clearTextByName("field52"); 124 125 waitAndTypeByXpath("//input[@name='field52']", "1234-12-1234"); 126 fireEvent("field52", "blur"); 127 validateErrorImage(true); 128 clearTextByName("field52"); 129 130 waitAndTypeByXpath("//input[@name='field52']", "123.123.1234"); 131 fireEvent("field52", "blur"); 132 validateErrorImage(true); 133 clearTextByName("field52"); 134 135 waitAndTypeByXpath("//input[@name='field52']", "123-123-12345"); 136 fireEvent("field52", "blur"); 137 validateErrorImage(true); 138 clearTextByName("field52"); 139 140 waitAndTypeByXpath("//input[@name='field52']", "123-123-1234"); 141 fireEvent("field52", "blur"); 142 validateErrorImage(false); 143 clearTextByName("field52"); 144 145 //---------------------------------------------JavaClass Text------------------------------// 146 waitAndTypeByXpath("//input[@name='field53']", "127"); 147 fireEvent("field53", "blur"); 148 validateErrorImage(true); 149 clearTextByName("field53"); 150 151 waitAndTypeByXpath("//input[@name='field53']", "TestJava!@#Class"); 152 fireEvent("field53", "blur"); 153 validateErrorImage(true); 154 clearTextByName("field53"); 155 156 waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass"); 157 fireEvent("field53", "blur"); 158 validateErrorImage(true); 159 clearTextByName("field53"); 160 161 waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass"); 162 fireEvent("field53", "blur"); 163 validateErrorImage(true); 164 clearTextByName("field53"); 165 166 waitAndTypeByXpath("//input[@name='field53']", "TestJavaClass"); 167 fireEvent("field53", "blur"); 168 validateErrorImage(false); 169 clearTextByName("field53"); 170 171 //---------------------------------------------Email Text------------------------------// 172 waitAndTypeByXpath("//input[@name='field54']", "123@123.123"); 173 fireEvent("field54", "blur"); 174 validateErrorImage(true); 175 clearTextByName("field54"); 176 177 waitAndTypeByXpath("//input[@name='field54']", "email.com@emailServer"); 178 fireEvent("field54", "blur"); 179 validateErrorImage(true); 180 clearTextByName("field54"); 181 182 waitAndTypeByXpath("//input[@name='field54']", "emailemailServer@.com"); 183 fireEvent("field54", "blur"); 184 validateErrorImage(true); 185 clearTextByName("field54"); 186 187 waitAndTypeByXpath("//input[@name='field54']", "email@emailServercom"); 188 fireEvent("field54", "blur"); 189 validateErrorImage(true); 190 clearTextByName("field54"); 191 192 waitAndTypeByXpath("//input[@name='field54']", "email@emailServer.com"); 193 fireEvent("field54", "blur"); 194 validateErrorImage(false); 195 clearTextByName("field54"); 196 197 //---------------------------------------------URL pattern Text------------------------------// 198 waitAndTypeByXpath("//input[@name='field84']", "www.google.com"); 199 fireEvent("field84", "blur"); 200 validateErrorImage(true); 201 clearTextByName("field84"); 202 203 waitAndTypeByXpath("//input[@name='field84']", "https:www.google.com"); 204 fireEvent("field84", "blur"); 205 validateErrorImage(true); 206 clearTextByName("field84"); 207 208 waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.comsdfa123!#@"); 209 fireEvent("field84", "blur"); 210 validateErrorImage(true); 211 clearTextByName("field84"); 212 213 waitAndTypeByXpath("//input[@name='field84']", "ftp:/www.google.coms"); 214 fireEvent("field84", "blur"); 215 validateErrorImage(true); 216 clearTextByName("field84"); 217 218 waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.com"); 219 fireEvent("field84", "blur"); 220 validateErrorImage(false); 221 clearTextByName("field84"); 222 223 waitAndTypeByXpath("//input[@name='field84']", "https://www.google.com"); 224 fireEvent("field84", "blur"); 225 validateErrorImage(false); 226 clearTextByName("field84"); 227 228 waitAndTypeByXpath("//input[@name='field84']", "http://www.google.com"); 229 fireEvent("field84", "blur"); 230 validateErrorImage(false); 231 clearTextByName("field84"); 232 233 //---------------------------------------------Date pattern Text------------------------------// 234 //-------------invalid formats 235 waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12:87 am"); 236 fireEvent("field55", "blur"); 237 validateErrorImage(true); 238 clearTextByName("field55"); 239 240 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12 am"); 241 fireEvent("field55", "blur"); 242 validateErrorImage(true); 243 clearTextByName("field55"); 244 245 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12"); 246 fireEvent("field55", "blur"); 247 validateErrorImage(true); 248 clearTextByName("field55"); 249 250 waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12"); 251 fireEvent("field55", "blur"); 252 validateErrorImage(true); 253 clearTextByName("field55"); 254 255 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12:78"); 256 fireEvent("field55", "blur"); 257 validateErrorImage(true); 258 clearTextByName("field55"); 259 260 waitAndTypeByXpath("//input[@name='field55']", "12 Sept"); 261 fireEvent("field55", "blur"); 262 validateErrorImage(true); 263 clearTextByName("field55"); 264 265 waitAndTypeByXpath("//input[@name='field55']", "Sept 12 12:12"); 266 fireEvent("field55", "blur"); 267 validateErrorImage(true); 268 clearTextByName("field55"); 269 270 waitAndTypeByXpath("//input[@name='field55']", "221299 12:12:13"); 271 fireEvent("field55", "blur"); 272 validateErrorImage(true); 273 clearTextByName("field55"); 274 275 waitAndTypeByXpath("//input[@name='field55']", "111222 12:12"); 276 fireEvent("field55", "blur"); 277 validateErrorImage(true); 278 clearTextByName("field55"); 279 280 waitAndTypeByXpath("//input[@name='field55']", "9/9/2012 12:12 am"); 281 fireEvent("field55", "blur"); 282 validateErrorImage(true); 283 clearTextByName("field55"); 284 285 //-------------valid formats 286 waitAndTypeByXpath("//input[@name='field55']", "09/09/2012 12:12 pm"); 287 fireEvent("field55", "blur"); 288 validateErrorImage(false); 289 clearTextByName("field55"); 290 291 waitAndTypeByXpath("//input[@name='field55']", "090923"); 292 fireEvent("field55", "blur"); 293 validateErrorImage(false); 294 clearTextByName("field55"); 295 296 waitAndTypeByXpath("//input[@name='field55']", "Sept 12"); 297 fireEvent("field55", "blur"); 298 validateErrorImage(false); 299 clearTextByName("field55"); 300 301 waitAndTypeByXpath("//input[@name='field55']", "2034"); 302 fireEvent("field55", "blur"); 303 validateErrorImage(false); 304 clearTextByName("field55"); 305 306 waitAndTypeByXpath("//input[@name='field55']", "12/12/2012 23:12:59"); 307 fireEvent("field55", "blur"); 308 validateErrorImage(false); 309 clearTextByName("field55"); 310 311 waitAndTypeByXpath("//input[@name='field55']", "12-12-12 23:12:59"); 312 fireEvent("field55", "blur"); 313 validateErrorImage(false); 314 clearTextByName("field55"); 315 316 waitAndTypeByXpath("//input[@name='field55']", "121212 23:12:32"); 317 fireEvent("field55", "blur"); 318 validateErrorImage(false); 319 clearTextByName("field55"); 320 321 waitAndTypeByXpath("//input[@name='field55']", "Sept 12 23:45:50"); 322 fireEvent("field55", "blur"); 323 validateErrorImage(false); 324 clearTextByName("field55"); 325 326 waitAndTypeByXpath("//input[@name='field55']", "2011 12:23:32"); 327 fireEvent("field55", "blur"); 328 validateErrorImage(false); 329 clearTextByName("field55"); 330 331 //---------------------------------------------BasicDate pattern Text------------------------------// 332 waitAndTypeByXpath("//input[@name='field75']", "12122012"); 333 fireEvent("field75", "blur"); 334 validateErrorImage(true); 335 clearTextByName("field75"); 336 337 waitAndTypeByXpath("//input[@name='field75']", "13-12-34"); 338 fireEvent("field75", "blur"); 339 validateErrorImage(true); 340 clearTextByName("field75"); 341 342 waitAndTypeByXpath("//input[@name='field75']", "12:12:2034"); 343 fireEvent("field75", "blur"); 344 validateErrorImage(true); 345 clearTextByName("field75"); 346 347 waitAndTypeByXpath("//input[@name='field75']", "12-12-2034"); 348 fireEvent("field75", "blur"); 349 validateErrorImage(false); 350 clearTextByName("field75"); 351 352 //---------------------------------------------Time12H Pattern Text------------------------------// 353 waitAndTypeByXpath("//input[@name='field82']", "13:00:12"); 354 fireEvent("field82", "blur"); 355 validateErrorImage(true); 356 clearTextByName("field82"); 357 358 waitAndTypeByXpath("//input[@name='field82']", "09:00:"); 359 fireEvent("field82", "blur"); 360 validateErrorImage(true); 361 clearTextByName("field82"); 362 363 waitAndTypeByXpath("//input[@name='field82']", "3-00:12"); 364 fireEvent("field82", "blur"); 365 validateErrorImage(true); 366 clearTextByName("field82"); 367 368 waitAndTypeByXpath("//input[@name='field82']", "3:00:34"); 369 fireEvent("field82", "blur"); 370 validateErrorImage(false); 371 clearTextByName("field82"); 372 373 waitAndTypeByXpath("//input[@name='field82']", "3:00"); 374 fireEvent("field82", "blur"); 375 validateErrorImage(false); 376 clearTextByName("field82"); 377 378 //---------------------------------------------Time24H Pattern Text------------------------------// 379 waitAndTypeByXpath("//input[@name='field83']", "24:00:12"); 380 fireEvent("field83", "blur"); 381 validateErrorImage(true); 382 clearTextByName("field83"); 383 384 waitAndTypeByXpath("//input[@name='field83']", "14:00:"); 385 fireEvent("field83", "blur"); 386 validateErrorImage(true); 387 clearTextByName("field83"); 388 389 waitAndTypeByXpath("//input[@name='field83']", "13:00:76"); 390 fireEvent("field83", "blur"); 391 validateErrorImage(true); 392 clearTextByName("field83"); 393 394 waitAndTypeByXpath("//input[@name='field83']", "13:00:23"); 395 fireEvent("field83", "blur"); 396 validateErrorImage(false); 397 clearTextByName("field83"); 398 399 waitAndTypeByXpath("//input[@name='field83']", "23:00:12"); 400 fireEvent("field83", "blur"); 401 validateErrorImage(false); 402 clearTextByName("field83"); 403 404 //---------------------------------------------Timestamp pattern Text------------------------------// 405 waitAndTypeByXpath("//input[@name='field56']", "1000-12-12 12:12:12.103"); 406 fireEvent("field56", "blur"); 407 validateErrorImage(true); 408 clearTextByName("field56"); 409 410 waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87"); 411 fireEvent("field56", "blur"); 412 validateErrorImage(true); 413 clearTextByName("field56"); 414 415 waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87"); 416 fireEvent("field56", "blur"); 417 validateErrorImage(true); 418 clearTextByName("field56"); 419 420 waitAndTypeByXpath("//input[@name='field56']", "2011-08-12 12:12:12"); 421 fireEvent("field56", "blur"); 422 validateErrorImage(true); 423 clearTextByName("field56"); 424 425 //--------this should not be allowed 426 /* 427 clearTimeStampText(); 428 waitAndType("//input[@name='field56']", "2999-12-12 12:12:12.103"); 429 focus("//input[@name='field57']"); 430 Thread.sleep(100); 431 assertTrue(isTextPresent("Must be a date/time in the format of yyyy-mm-dd hh:mm:ss.ms, between the years of 1900 and 2099, inclusive. \"ms\" represents milliseconds, and must be included.")); 432 433 */ 434 waitAndTypeByXpath("//input[@name='field56']", "2099-12-12 12:12:12.103"); 435 fireEvent("field56", "blur"); 436 validateErrorImage(false); 437 clearTextByName("field56"); 438 439 //---------------------------------------------Year Pattern Text------------------------------// 440 waitAndTypeByXpath("//input[@name='field57']", "1599"); 441 fireEvent("field57", "blur"); 442 validateErrorImage(true); 443 clearTextByName("field57"); 444 445 waitAndTypeByXpath("//input[@name='field57']", "2200"); 446 fireEvent("field57", "blur"); 447 validateErrorImage(true); 448 clearTextByName("field57"); 449 450 waitAndTypeByXpath("//input[@name='field57']", "20000"); 451 fireEvent("field57", "blur"); 452 validateErrorImage(true); 453 clearTextByName("field57"); 454 455 waitAndTypeByXpath("//input[@name='field57']", "-202"); 456 fireEvent("field57", "blur"); 457 validateErrorImage(true); 458 clearTextByName("field57"); 459 460 waitAndTypeByXpath("//input[@name='field57']", "2000"); 461 fireEvent("field57", "blur"); 462 validateErrorImage(false); 463 clearTextByName("field57"); 464 465 //---------------------------------------------Month Pattern Text------------------------------// 466 waitAndTypeByXpath("//input[@name='field58']", "0"); 467 fireEvent("field58", "blur"); 468 validateErrorImage(true); 469 clearTextByName("field58"); 470 471 waitAndTypeByXpath("//input[@name='field58']", "-12"); 472 fireEvent("field58", "blur"); 473 validateErrorImage(true); 474 clearTextByName("field58"); 475 476 waitAndTypeByXpath("//input[@name='field58']", "100"); 477 fireEvent("field58", "blur"); 478 validateErrorImage(true); 479 clearTextByName("field58"); 480 481 waitAndTypeByXpath("//input[@name='field58']", "12"); 482 fireEvent("field58", "blur"); 483 validateErrorImage(false); 484 clearTextByName("field58"); 485 486 //---------------------------------------------ZipCode Pattern Text------------------------------// 487 488 waitAndTypeByXpath("//input[@name='field61']", "123"); 489 fireEvent("field61", "blur"); 490 validateErrorImage(true); 491 clearTextByName("field61"); 492 493 waitAndTypeByXpath("//input[@name='field61']", "2341 12"); 494 fireEvent("field61", "blur"); 495 validateErrorImage(true); 496 clearTextByName("field61"); 497 498 waitAndTypeByXpath("//input[@name='field61']", "0-1231"); 499 fireEvent("field61", "blur"); 500 validateErrorImage(true); 501 clearTextByName("field61"); 502 503 waitAndTypeByXpath("//input[@name='field61']", "12345"); 504 fireEvent("field61", "blur"); 505 validateErrorImage(false); 506 clearTextByName("field61"); 507 508 //---------------------------------------------Alpha Numeric w/o options Text------------------------------// 509 waitAndTypeByXpath("//input[@name='field62']", "123 23 @#"); 510 fireEvent("field62", "blur"); 511 validateErrorImage(true); 512 clearTextByName("field62"); 513 514 waitAndTypeByXpath("//input[@name='field62']", "-asd123"); 515 fireEvent("field62", "blur"); 516 validateErrorImage(true); 517 clearTextByName("field62"); 518 519 waitAndTypeByXpath("//input[@name='field62']", "asd/123"); 520 fireEvent("field62", "blur"); 521 validateErrorImage(true); 522 clearTextByName("field62"); 523 524 waitAndTypeByXpath("//input[@name='field62']", "asd123"); 525 fireEvent("field62", "blur"); 526 validateErrorImage(false); 527 clearTextByName("field62"); 528 529 //---------------------------------------------Alpha Numeric with options Text------------------------------// 530 waitAndTypeByXpath("//input[@name='field63']", "123^we"); 531 fireEvent("field63", "blur"); 532 validateErrorImage(true); 533 clearTextByName("field63"); 534 535 waitAndTypeByXpath("//input[@name='field63']", "-123_asd"); 536 fireEvent("field63", "blur"); 537 validateErrorImage(true); 538 clearTextByName("field63"); 539 540 waitAndTypeByXpath("//input[@name='field63']", "123 23 @#"); 541 fireEvent("field63", "blur"); 542 clearTextByName("field63"); 543 544 waitAndTypeByXpath("//input[@name='field63']", "as_de 456/123"); 545 fireEvent("field63", "blur"); 546 validateErrorImage(false); 547 clearTextByName("field63"); 548 549 //---------------------------------------------Alpha with Whitespace and commas Text------------------------------// 550 waitAndTypeByXpath("//input[@name='field64']", "123^we"); 551 fireEvent("field64", "blur"); 552 validateErrorImage(true); 553 clearTextByName("field64"); 554 555 waitAndTypeByXpath("//input[@name='field64']", "asd_pqr"); 556 fireEvent("field64", "blur"); 557 validateErrorImage(true); 558 clearTextByName("field64"); 559 560 waitAndTypeByXpath("//input[@name='field64']", "asd/def"); 561 fireEvent("field64", "blur"); 562 validateErrorImage(true); 563 clearTextByName("field64"); 564 565 waitAndTypeByXpath("//input[@name='field64']", "asd ,pqr"); 566 fireEvent("field64", "blur"); 567 validateErrorImage(false); 568 clearTextByName("field64"); 569 570 //---------------------------------------------AlphaPatterrn with disallowed charset Text------------------------------// 571 waitAndTypeByXpath("//input[@name='field76']", "123"); 572 fireEvent("field76", "blur"); 573 validateErrorImage(true); 574 clearTextByName("field76"); 575 576 waitAndTypeByXpath("//input[@name='field76']", "`abcd`"); 577 fireEvent("field76", "blur"); 578 validateErrorImage(true); 579 clearTextByName("field76"); 580 581 waitAndTypeByXpath("//input[@name='field76']", "|abcd|"); 582 fireEvent("field76", "blur"); 583 validateErrorImage(true); 584 clearTextByName("field76"); 585 586 waitAndTypeByXpath("//input[@name='field76']", "~abcd~"); 587 fireEvent("field76", "blur"); 588 validateErrorImage(true); 589 clearTextByName("field76"); 590 591 waitAndTypeByXpath("//input[@name='field76']", " ab_c d_ef "); 592 fireEvent("field76", "blur"); 593 validateErrorImage(false); 594 clearTextByName("field76"); 595 596 //---------------------------------------------Anything with No Whitespace Text------------------------------// 597 waitAndTypeByXpath("//input[@name='field65']", "123 ^we"); 598 fireEvent("field65", "blur"); 599 validateErrorImage(true); 600 clearTextByName("field65"); 601 602 waitAndTypeByXpath("//input[@name='field65']", "123^we!@#^&*~:"); 603 fireEvent("field65", "blur"); 604 validateErrorImage(false); 605 clearTextByName("field65"); 606 607 //---------------------------------------------CharacterSet Text------------------------------// 608 waitAndTypeByXpath("//input[@name='field66']", "123 ^we"); 609 fireEvent("field66", "blur"); 610 validateErrorImage(true); 611 clearTextByName("field66"); 612 613 waitAndTypeByXpath("//input[@name='field66']", "123_^we"); 614 fireEvent("field66", "blur"); 615 validateErrorImage(true); 616 clearTextByName("field66"); 617 618 waitAndTypeByXpath("//input[@name='field66']", "abc ABC"); 619 fireEvent("field66", "blur"); 620 validateErrorImage(true); 621 clearTextByName("field66"); 622 623 waitAndTypeByXpath("//input[@name='field66']", "aAbBcC"); 624 fireEvent("field66", "blur"); 625 validateErrorImage(false); 626 clearTextByName("field66"); 627 628 //---------------------------------------------Numeric Character Text------------------------------// 629 waitAndTypeByXpath("//input[@name='field67']", "123 ^we"); 630 fireEvent("field67", "blur"); 631 validateErrorImage(true); 632 clearTextByName("field67"); 633 634 waitAndTypeByXpath("//input[@name='field67']", "123/10"); 635 fireEvent("field67", "blur"); 636 validateErrorImage(true); 637 clearTextByName("field67"); 638 639 waitAndTypeByXpath("//input[@name='field67']", "(123.00)"); 640 fireEvent("field67", "blur"); 641 validateErrorImage(true); 642 clearTextByName("field67"); 643 644 waitAndTypeByXpath("//input[@name='field67']", "(12-3)"); 645 fireEvent("field67", "blur"); 646 validateErrorImage(false); 647 clearTextByName("field67"); 648 649 //---------------------------------------------Valid Chars Custom Text------------------------------// 650 waitAndTypeByXpath("//input[@name='field68']", "123.123"); 651 fireEvent("field68", "blur"); 652 validateErrorImage(true); 653 clearTextByName("field68"); 654 655 waitAndTypeByXpath("//input[@name='field68']", "a.b"); 656 fireEvent("field68", "blur"); 657 validateErrorImage(true); 658 clearTextByName("field68"); 659 660 waitAndTypeByXpath("//input[@name='field68']", "123 qwe"); 661 fireEvent("field68", "blur"); 662 validateErrorImage(true); 663 clearTextByName("field68"); 664 665 waitAndTypeByXpath("//input[@name='field68']", "5.a"); 666 fireEvent("field68", "blur"); 667 validateErrorImage(true); 668 clearTextByName("field68"); 669 670 waitAndTypeByXpath("//input[@name='field68']", "a.0,b.4"); 671 fireEvent("field68", "blur"); 672 validateErrorImage(true); 673 clearTextByName("field68"); 674 675 waitAndTypeByXpath("//input[@name='field68']", "a.0"); 676 fireEvent("field68", "blur"); 677 validateErrorImage(false); 678 clearTextByName("field68"); 679 passed(); 680 } 681 682 public void validateErrorImage(boolean validateVisible) throws Exception { 683 Thread.sleep(500); 684 for (int second = 0;; second++) { 685 if (second >= 5) 686 Assert.fail("timeout"); 687 try { 688 if (validateVisible) { 689 690 if (isVisible("img.uif-validationImage")); 691 break; 692 } else { 693 694 if (! isVisible("img.uif-validationImage")) 695 break; 696 } 697 698 } catch (Exception e) {} 699 Thread.sleep(1000); 700 } 701 if (validateVisible) { 702 Assert.assertTrue(isVisible("img.uif-validationImage")); 703 } else { 704 Assert.assertTrue(! isVisible("img.uif-validationImage")); 705 } 706 } 707 }