Changeset 389
- Timestamp:
- 03/23/07 00:03:27 (2 years ago)
- Files:
-
- trunk/ext/jelix/jelix.c (modified) (10 diffs)
- trunk/ext/jelix/testperf.php (modified) (4 diffs)
- trunk/ext/jelix/tests/scan_action_sel_001.phpt (modified) (4 diffs)
- trunk/ext/jelix/tests/scan_action_sel_002.phpt (modified) (2 diffs)
- trunk/testapp/modules/unittest/classes/utselectoract.class.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ext/jelix/jelix.c
r387 r389 424 424 PHP_FUNCTION(jelix_scan_action_sel) 425 425 { 426 zval **selectorStr, **objectArg ;426 zval **selectorStr, **objectArg, **defaultActionArg; 427 427 int length; 428 428 char * sel, *cursor, *module, *resource, *request; 429 429 430 430 431 switch (ZEND_NUM_ARGS()) { 432 case 2: 433 if (zend_get_parameters_ex(2, &selectorStr, &objectArg) == FAILURE) { 434 RETURN_FALSE; 435 } 436 break; 437 default: 438 ZEND_WRONG_PARAM_COUNT(); 439 break; 440 } 431 if(ZEND_NUM_ARGS() != 3) { 432 ZEND_WRONG_PARAM_COUNT(); 433 } 434 if (zend_get_parameters_ex(3, &selectorStr, &objectArg, &defaultActionArg) == FAILURE) { 435 php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot read arguments"); 436 RETURN_FALSE; 437 } 441 438 442 439 if(Z_TYPE_P(*objectArg) != IS_OBJECT){ … … 444 441 RETURN_FALSE 445 442 } 443 if(Z_TYPE_P(*defaultActionArg) != IS_STRING){ 444 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid third argument, not a string"); 445 RETURN_FALSE 446 } 446 447 447 448 int module_length=0; … … 450 451 int cursor_count=0; 451 452 452 /*453 JELIX_SELECTOR_MODULE /^(([\w\.]+)~)?([\w\.]+)$/454 JELIX_SELECTOR_ACTION455 JELIX_SELECTOR_LOCALE /^(([\w\.]+)~)?(\w+)\.([\w\.]+)$/456 JELIX_SELECTOR_SIMPLEFILE /^([\w\.\/]+)$/457 */458 453 convert_to_string_ex(selectorStr); 459 454 length = Z_STRLEN_PP(selectorStr); … … 466 461 int sharpOk = 0; 467 462 int hasRequest=0; 463 int firstDashPos = -1; 464 int hasDot = 0; 468 465 469 466 // parse the module part … … 477 474 } 478 475 sharpOk=1; 476 }else if(*cursor == '.'){ 477 hasDot = 1; 479 478 }else if(!( ( *cursor >= 'a' && *cursor <= 'z') 480 479 || ( *cursor >= 'A' && *cursor <= 'Z') 481 480 || ( *cursor >= '0' && *cursor <= '9') 482 || *cursor == '_' || *cursor == '.') || sharpOk){481 || *cursor == '_' ) || sharpOk){ 483 482 RETURN_FALSE 484 483 } 484 if(*cursor == '_' && firstDashPos == -1){ 485 firstDashPos = module_length; 486 } 487 485 488 module_length ++; 486 489 cursor_count ++; … … 488 491 } 489 492 490 491 493 if(cursor_count >= length){ 492 494 // we don't find any '~' characters, so we have parsed the resource 495 if(hasDot) RETURN_FALSE 496 493 497 resource_length = module_length; 494 498 module_length = 0; 495 499 }else if( *cursor == '@'){ 496 500 // we don't find any '~' characters, so we have parsed the resource 501 if(hasDot) RETURN_FALSE 502 497 503 resource_length = module_length; 498 504 module_length = 0; … … 521 527 RETURN_FALSE 522 528 } 523 529 firstDashPos=-1; 524 530 cursor_count++; 525 531 cursor++; … … 540 546 || ( *cursor >= 'A' && *cursor <= 'Z') 541 547 || ( *cursor >= '0' && *cursor <= '9') 542 || *cursor == '_' || *cursor == '.') || sharpOk){548 || *cursor == '_') || sharpOk){ 543 549 RETURN_FALSE 544 550 } 551 if(*cursor == '_' && firstDashPos == -1){ 552 firstDashPos = resource_length; 553 } 554 545 555 resource_length ++; 546 556 cursor_count ++; … … 568 578 } 569 579 580 // request shouldn't empty if there is a @ 570 581 if(hasRequest && request_length == 0){ 571 582 RETURN_FALSE 572 583 } 573 584 585 if(resource_length == 0){ 586 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, "default_index", sizeof("default_index")-1 TSRMLS_CC); 587 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, "default", sizeof("default")-1 TSRMLS_CC); 588 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, "index", sizeof("index")-1 TSRMLS_CC); 589 }else{ 590 if(resource_length == 1 && *resource == '#'){ 591 resource_length = Z_STRLEN_PP(defaultActionArg); 592 resource = Z_STRVAL_PP(defaultActionArg); 593 firstDashPos=-1; 594 int i; 595 for(i=0; i < resource_length;i++){ 596 if(resource[i] == '_'){ 597 firstDashPos=i; 598 break; 599 } 600 } 601 } 602 603 if(firstDashPos == -1){ 604 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, "default", sizeof("default")-1 TSRMLS_CC); 605 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, resource, resource_length TSRMLS_CC); 606 607 char *r; 608 int ld = sizeof("default_") -1; 609 int lr = ld + resource_length+1; 610 r= emalloc(lr); 611 if (r) { 612 memcpy(r, "default_", ld); 613 memcpy(r+ld, resource, resource_length); 614 r[lr] = 0; 615 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, r, lr -1 TSRMLS_CC); 616 efree(r); 617 } 618 619 }else if(firstDashPos == 0){ 620 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, "default", sizeof("default")-1 TSRMLS_CC); 621 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, resource+1, resource_length-1 TSRMLS_CC); 622 623 char *r; 624 int ld = sizeof("default") -1; 625 int lr = ld + resource_length + 1; 626 r= emalloc(lr); 627 if (r) { 628 memcpy(r, "default", ld); 629 memcpy(r+ld, resource, resource_length); 630 r[lr] = 0; 631 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, r, lr -1 TSRMLS_CC); 632 efree(r); 633 } 634 635 }else if(firstDashPos == resource_length-1){ 636 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, resource, resource_length-1 TSRMLS_CC); 637 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, "index", sizeof("index")-1 TSRMLS_CC); 638 char *r; 639 int ld = sizeof("index") -1; 640 int lr = ld + resource_length +1; 641 r= emalloc(lr); 642 if (r) { 643 memcpy(r, resource, resource_length); 644 memcpy(r+resource_length, "index", ld); 645 r[lr] = 0; 646 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, r, lr -1 TSRMLS_CC); 647 efree(r); 648 } 649 650 }else{ 651 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "controller", sizeof("controller") - 1, resource, firstDashPos TSRMLS_CC); 652 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "method", sizeof("method") - 1, resource+firstDashPos+1, resource_length-firstDashPos-1 TSRMLS_CC); 653 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC); 654 } 655 } 656 574 657 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "module", sizeof("module") - 1, module, module_length TSRMLS_CC); 575 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC);576 658 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "request", sizeof("request") - 1, request, request_length TSRMLS_CC); 577 659 RETURN_TRUE … … 589 671 JELIX_SELECTOR_SIMPLEFILE /^([\w\.\/]+)$/ 590 672 */ 591 /*592 593 PHP_FUNCTION(jelix_scan_action_sel)594 {595 zval **selectorStr, **objectArg, **typeArg;596 int length, type;597 char * sel, *cursor, *module, *resource, *request;598 599 600 switch (ZEND_NUM_ARGS()) {601 case 2:602 if (zend_get_parameters_ex(2, &selectorStr, &objectArg) == FAILURE) {603 RETURN_FALSE;604 }605 type=JELIX_SELECTOR_MODULE;606 break;607 608 case 3:609 if (zend_get_parameters_ex(3, &selectorStr, &objectArg, &typeArg) == FAILURE) {610 php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot read arguments");611 RETURN_FALSE;612 }613 convert_to_long_ex(typeArg);614 type = Z_LVAL_PP(typeArg);615 if(type < 1 || type > 4){616 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third argument doesn't correspond to one of JELIX_SEL_* constant");617 RETURN_FALSE618 }619 break;620 default:621 ZEND_WRONG_PARAM_COUNT();622 break;623 }624 625 if(Z_TYPE_P(*objectArg) != IS_OBJECT){626 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid second argument, not an object");627 RETURN_FALSE628 }629 630 int module_length=0;631 int resource_length=0;632 int request_length=0;633 int cursor_count=0;634 635 636 convert_to_string_ex(selectorStr);637 length = Z_STRLEN_PP(selectorStr);638 sel = Z_STRVAL_PP(selectorStr);639 640 cursor_count=0;641 cursor = module = resource = sel;642 643 int error = 0;644 int sharpOk = 0;645 int hasRequest=0;646 647 // parse the module part648 while(cursor_count < length){649 if(*cursor == '~'){650 break;651 }652 if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){653 break;654 }655 656 if(*cursor == '#'){657 if(type != JELIX_SELECTOR_ACTION ){658 RETURN_FALSE659 }660 if(sharpOk || module_length > 1){661 RETURN_FALSE662 }663 sharpOk=1;664 }else{665 if(!( ( *cursor >= 'a' && *cursor <= 'z')666 || ( *cursor >= 'A' && *cursor <= 'Z')667 || ( *cursor >= '0' && *cursor <= '9')668 || *cursor == '_' || *cursor == '.') || sharpOk){669 RETURN_FALSE670 }671 }672 module_length ++;673 cursor_count ++;674 cursor++;675 }676 677 678 if(cursor_count >= length){679 // we don't find any '~' characters, so we have parsed the resource680 resource_length = module_length;681 module_length = 0;682 }else if( *cursor == '@' && type == JELIX_SELECTOR_ACTION){683 // we don't find any '~' characters, so we have parsed the resource684 resource_length = module_length;685 module_length = 0;686 hasRequest = 1;687 // now we parse the @ section688 cursor_count ++;689 cursor++;690 691 request = cursor;692 request_length = 0;693 while(cursor_count < length){694 if(!( ( *cursor >= 'a' && *cursor <= 'z')695 || ( *cursor >= 'A' && *cursor <= 'Z')696 || ( *cursor >= '0' && *cursor <= '9')697 || *cursor == '_' || *cursor == '.')){698 RETURN_FALSE699 }700 request_length ++;701 cursor_count ++;702 cursor++;703 }704 }else{705 // the string starts by a ~ : it's not really a problem, but we generate an error706 // to keep compatibily with php version of selectors.707 if(module_length == 0){708 RETURN_FALSE709 }710 711 cursor_count++;712 cursor++;713 resource = cursor;714 resource_length = 0;715 sharpOk = 0;716 while(cursor_count < length){717 if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){718 break;719 }720 721 if(*cursor == '#'){722 if(type != JELIX_SELECTOR_ACTION ){723 RETURN_FALSE724 }725 if(sharpOk || resource_length > 1){726 RETURN_FALSE727 }728 sharpOk=1;729 }else{730 if(!( ( *cursor >= 'a' && *cursor <= 'z')731 || ( *cursor >= 'A' && *cursor <= 'Z')732 || ( *cursor >= '0' && *cursor <= '9')733 || *cursor == '_' || *cursor == '.') || sharpOk){734 RETURN_FALSE735 }736 }737 resource_length ++;738 cursor_count ++;739 cursor++;740 }741 742 if(*cursor == '@' && type == JELIX_SELECTOR_ACTION){743 hasRequest = 1;744 cursor_count++;745 cursor++;746 request = cursor;747 request_length = 0;748 while(cursor_count < length){749 if(!( ( *cursor >= 'a' && *cursor <= 'z')750 || ( *cursor >= 'A' && *cursor <= 'Z')751 || ( *cursor >= '0' && *cursor <= '9')752 || *cursor == '_' || *cursor == '.')){753 RETURN_FALSE754 }755 request_length ++;756 cursor_count ++;757 cursor++;758 }759 }760 }761 762 if(type == JELIX_SELECTOR_ACTION){763 if(hasRequest && request_length == 0){764 RETURN_FALSE765 }766 }else if( resource_length == 0 ){767 RETURN_FALSE768 }769 770 771 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "module", sizeof("module") - 1, module, module_length TSRMLS_CC);772 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "resource", sizeof("resource") - 1, resource, resource_length TSRMLS_CC);773 if(type == JELIX_SELECTOR_ACTION){774 zend_update_property_stringl(Z_OBJCE_P(*objectArg), *objectArg, "request", sizeof("request") - 1, request, request_length TSRMLS_CC);775 }776 RETURN_TRUE777 }*/778 trunk/ext/jelix/testperf.php
r387 r389 2 2 3 3 function module_selector($foo, $obj){ 4 if(preg_match("/^(([\w\.]+)~)?([\w\.]+)$/", $foo, $m)){ 4 //if(preg_match("/^(([\w\.]+)~)?([\w\.]+)$/", $foo, $m)){ 5 if(preg_match("/^(([a-zA-Z0-9_\.]+)~)?([a-zA-Z0-9_\.]+)$/", $foo, $m)){ 5 6 if($m[1]!='' && $m[2]!=''){ 6 7 $obj->module = $m[2]; … … 16 17 17 18 function action_selector($foo, $obj){ 18 if(preg_match("/^(?:([\w\.]+|\#)~)?([\w\.]+|\#)?(?:@([\w\.]+))?$/", $foo, $m)){ 19 //if(preg_match("/^(?:([\w\.]+|\#)~)?(\w+|\#)?(?:@([\w\.]+))?$/", $foo, $m)){ 20 if(preg_match("/^(?:([a-zA-Z0-9_\.]+|\#)~)?([a-zA-Z0-9_]+|\#)?(?:@([a-zA-Z0-9_\.]+))?$/", $foo, $m)){ 19 21 $m=array_pad($m,4,''); 20 22 if($m[1]!=''){ … … 27 29 } 28 30 if($m[2] == '#') 29 $obj->resource = ' index';31 $obj->resource = 'machin_bidule'; 30 32 else 31 33 $obj->resource = $m[2]; … … 88 90 for($i=0; $i < 1000; $i++){ 89 91 $o = new obj(); 90 jelix_scan_action_sel("aaa~bbb@classic",$o );92 jelix_scan_action_sel("aaa~bbb@classic",$o,"machin_bidule"); 91 93 } 92 94 $t3 = microtime(true); trunk/ext/jelix/tests/scan_action_sel_001.phpt
r388 r389 13 13 } 14 14 15 $tests = array( 0=>"toto", 1=>"aaa~toto", 2=>"aa_AZ123aR~toPO_etto", 3=>"foo.bar~truc .muche", 4=>"#",16 5=>"#~foo", 6=>"foo~#", 7=>"#~#", 8=>"@classic", 9=>"foo.bar~truc .muche@classic",15 $tests = array( 0=>"toto", 1=>"aaa~toto", 2=>"aa_AZ123aR~toPO_etto", 3=>"foo.bar~trucmuche", 4=>"#", 16 5=>"#~foo", 6=>"foo~#", 7=>"#~#", 8=>"@classic", 9=>"foo.bar~trucmuche@classic", 17 17 10=>"foo.bar~truc_muche@classic", 11=>"#@classic", 12=>"#~foo@classic", 18 13=>"foo~#@classic", 14=>"#~#@classic" 19 18 13=>"foo~#@classic", 14=>"#~#@classic", 19 15=>"testapp~ctrl_meth@truc", 16=>"testapp~_meth@truc", 17=>"testapp~meth@truc", 20 18=>"testapp~ctrl_@truc", 19=>"testapp~@truc", 20=>"testapp~#@truc", 21 21=>"testapp~ctrl_meth", 22=>"testapp~_meth", 23=>"testapp~meth", 22 24=>"testapp~ctrl_", 25=>"testapp~", 26=>"testapp~#", 23 27=>"#~ctrl_meth@truc", 28=>"#~_meth@truc", 29=>"#~meth@truc", 24 30=>"#~ctrl_@truc", 31=>"#~@truc", 32=>"#~#@truc", 25 33=>"#~ctrl_meth", 34=>"#~_meth", 35=>"#~meth", 26 36=>"#~ctrl_", 37=>"#~", 38=>"#~#", 39=>"ctrl_meth@truc", 27 40=>"_meth@truc", 41=>"ctrl_@truc", 42=>"@truc", 28 43=>"#@truc", 44=>"ctrl_meth", 45=>"_meth", 29 46=>"meth", 47=>"ctrl_", 48=>"", 20 30 ); 21 31 … … 23 33 24 34 $obj = new obj(); 25 $ret = jelix_scan_action_sel($t, $obj );35 $ret = jelix_scan_action_sel($t, $obj, "machin_bidule"); 26 36 echo $k,":"; 27 37 if($ret === true){ … … 35 45 echo 'r=',$obj->resource,"\n"; 36 46 echo 'q=',$obj->request,"\n"; 47 echo 'c=',$obj->controller,"\n"; 48 echo 'm=',$obj->method,"\n"; 37 49 } 38 50 ?> … … 40 52 0:ok 41 53 m= 42 r=toto 43 q= 54 r=default_toto 55 q= 56 c=default 57 m=toto 44 58 1:ok 45 59 m=aaa 46 r=toto 47 q= 60 r=default_toto 61 q= 62 c=default 63 m=toto 48 64 2:ok 49 65 m=aa_AZ123aR 50 66 r=toPO_etto 51 67 q= 68 c=toPO 69 m=etto 52 70 3:ok 53 71 m=foo.bar 54 r=truc.muche 55 q= 72 r=default_trucmuche 73 q= 74 c=default 75 m=trucmuche 56 76 4:ok 57 77 m= 58 r=# 59 q= 78 r=machin_bidule 79 q= 80 c=machin 81 m=bidule 60 82 5:ok 61 83 m=# 62 r=foo 63 q= 84 r=default_foo 85 q= 86 c=default 87 m=foo 64 88 6:ok 65 89 m=foo 66 r=# 67 q= 90 r=machin_bidule 91 q= 92 c=machin 93 m=bidule 68 94 7:ok 69 95 m=# 70 r=# 71 q= 96 r=machin_bidule 97 q= 98 c=machin 99 m=bidule 72 100 8:ok 73 101 m= 74 r= 75 q=classic 102 r=default_index 103 q=classic 104 c=default 105 m=index 76 106 9:ok 77 107 m=foo.bar 78 r=truc.muche 79 q=classic 108 r=default_trucmuche 109 q=classic 110 c=default 111 m=trucmuche 80 112 10:ok 81 113 m=foo.bar 82 114 r=truc_muche 83 115 q=classic 116 c=truc 117 m=muche 84 118 11:ok 85 119 m= 86 r=# 87 q=classic 120 r=machin_bidule 121 q=classic 122 c=machin 123 m=bidule 88 124 12:ok 89 125 m=# 90 r=foo 91 q=classic 126 r=default_foo 127 q=classic 128 c=default 129 m=foo 92 130 13:ok 93 131 m=foo 94 r=# 95 q=classic 132 r=machin_bidule 133 q=classic 134 c=machin 135 m=bidule 96 136 14:ok 97 137 m=# 98 r=# 99 q=classic 138 r=machin_bidule 139 q=classic 140 c=machin 141 m=bidule 142 15:ok 143 m=testapp 144 r=ctrl_meth 145 q=truc 146 c=ctrl 147 m=meth 148 16:ok 149 m=testapp 150 r=default_meth 151 q=truc 152 c=default 153 m=meth 154 17:ok 155 m=testapp 156 r=default_meth 157 q=truc 158 c=default 159 m=meth 160 18:ok 161 m=testapp 162 r=ctrl_index 163 q=truc 164 c=ctrl 165 m=index 166 19:ok 167 m=testapp 168 r=default_index 169 q=truc 170 c=default 171 m=index 172 20:ok 173 m=testapp 174 r=machin_bidule 175 q=truc 176 c=machin 177 m=bidule 178 21:ok 179 m=testapp 180 r=ctrl_meth 181 q= 182 c=ctrl 183 m=meth 184 22:ok 185 m=testapp 186 r=default_meth 187 q= 188 c=default 189 m=meth 190 23:ok 191 m=testapp 192 r=default_meth 193 q= 194 c=default 195 m=meth 196 24:ok 197 m=testapp 198 r=ctrl_index 199 q= 200 c=ctrl 201 m=index 202 25:ok 203 m=testapp 204 r=default_index 205 q= 206 c=default 207 m=index 208 26:ok 209 m=testapp 210 r=machin_bidule 211 q= 212 c=machin 213 m=bidule 214 27:ok 215 m=# 216 r=ctrl_meth 217 q=truc 218 c=ctrl 219 m=meth 220 28:ok 221 m=# 222 r=default_meth 223 q=truc 224 c=default 225 m=meth 226 29:ok 227 m=# 228 r=default_meth 229 q=truc 230 c=default 231 m=meth 232 30:ok 233 m=# 234 r=ctrl_index 235 q=truc 236 c=ctrl 237 m=index 238 31:ok 239 m=# 240 r=default_index 241 q=truc 242 c=default 243 m=index 244 32:ok 245 m=# 246 r=machin_bidule 247 q=truc 248 c=machin 249 m=bidule 250 33:ok 251 m=# 252 r=ctrl_meth 253 q= 254 c=ctrl 255 m=meth 256 34:ok 257 m=# 258 r=default_meth 259 q= 260 c=default 261 m=meth 262 35:ok 263 m=# 264 r=default_meth 265 q= 266 c=default 267 m=meth 268 36:ok 269 m=# 270 r=ctrl_index 271 q= 272 c=ctrl 273 m=index 274 37:ok 275 m=# 276 r=default_index 277 q= 278 c=default 279 m=index 280 38:ok 281 m=# 282 r=machin_bidule 283 q= 284 c=machin 285 m=bidule 286 39:ok 287 m= 288 r=ctrl_meth 289 q=truc 290 c=ctrl 291 m=meth 292 40:ok 293 m= 294 r=default_meth 295 q=truc 296 c=default 297 m=meth 298 41:ok 299 m= 300 r=ctrl_index 301 q=truc 302 c=ctrl 303 m=index 304 42:ok 305 m= 306 r=default_index 307 q=truc 308 c=default 309 m=index 310 43:ok 311 m= 312 r=machin_bidule 313 q=truc 314 c=machin 315 m=bidule 316 44:ok 317 m= 318 r=ctrl_meth 319 q= 320 c=ctrl 321 m=meth 322 45:ok 323 m= 324 r=default_meth 325 q= 326 c=default 327 m=meth 328 46:ok 329 m= 330 r=default_meth 331 q= 332 c=default 333 m=meth 334 47:ok 335 m= 336 r=ctrl_index 337 q= 338 c=ctrl 339 m=index 340 48:ok 341 m= 342 r=default_index 343 q= 344 c=default 345 m=index trunk/ext/jelix/tests/scan_action_sel_002.phpt
r388 r389 9 9 public $resource; 10 10 public $request; 11 public $controller; 12 public $method; 11 13 } 12 14 13 15 $tests = array("a-b~toto", "ab~ro-ro", "~toPO__etto", 14 16 "#aaa", "##" , "aa#aa", "aaa#", 15 "foo~#aaa", "foo~aa#aa", "foo~aaa#", "~@classic", "@", "#@" );17 "foo~#aaa", "foo~aa#aa", "foo~aaa#", "~@classic", "@", "#@", "aa.bb", "aa~bb.cc"); 16 18 17 19 foreach($tests as $k=>$t){ 18 20 19 21 $obj = new obj(); 20 $ret = jelix_scan_action_sel($t, $obj );22 $ret = jelix_scan_action_sel($t, $obj,"machin_bidule"); 21 23 echo $k,":"; 22 24 if($ret === false){ … … 27 29 } 28 30 29 echo $obj->module,"!", $obj->resource,"!",$obj->resource," \n";31 echo $obj->module,"!", $obj->resource,"!",$obj->resource,"!",$obj->controller,"!",$obj->method,"\n"; 30 32 } 31 33 ?> 32 34 --EXPECT-- 33 35 0:ok 34 !! 36 !!!! 35 37 1:ok 36 !! 38 !!!! 37 39 2:ok 38 !! 40 !!!! 39 41 3:ok 40 !! 42 !!!! 41 43 4:ok 42 !! 44 !!!! 43 45 5:ok 44 !! 46 !!!! 45 47 6:ok 46 !! 48 !!!! 47 49 7:ok 48 !! 50 !!!! 49 51 8:ok 50 !! 52 !!!! 51 53 9:ok 52 !! 54 !!!! 53 55 10:ok 54 !! 56 !!!! 55 57 11:ok 56 !! 58 !!!! 57 59 12:ok 58 !! 60 !!!! 61 13:ok 62 !!!! 63 14:ok 64 !!!! trunk/testapp/modules/unittest/classes/utselectoract.class.php
r386 r389 3 3 * @package testapp 4 4 * @subpackage unittest module 5 * @version $Id$6 5 * @author Jouanneau Laurent 7 6 * @contributor 8 * @copyright 2006 Jouanneau laurent7 * @copyright 2006-2007 Jouanneau laurent 9 8 * @link http://www.jelix.org 10 9 * @licence GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html … … 17 16 "testapp~ctrl_meth@truc"=>array('testapp','ctrl','meth','truc'), 18 17 "testapp~_meth@truc"=>array('testapp','default','meth','truc'), 18 "testapp~meth@truc"=>array('testapp','default','meth','truc'), 19 19 "testapp~ctrl_@truc"=>array('testapp','ctrl','index','truc'), 20 20 "testapp~@truc"=>array('testapp','default','index','truc'), … … 22 22 "testapp~ctrl_meth"=>array('testapp','ctrl','meth','classic'), 23 23 "testapp~_meth"=>array('testapp','default','meth','classic'), 24 "testapp~meth"=>array('testapp','default','meth','classic'), 24 25 "testapp~ctrl_"=>array('testapp','ctrl','index','classic'), 25 26 "testapp~"=>array('testapp','default','index','classic'), … … 27 28 ); 28 29 $this->runtest($sels); 29 30 30 } 31 31 … … 40 40 "~ctrl_meth"=>false, 41 41 "~_meth"=>false, 42 "me.th"=>false, 42 43 "~ctrl_"=>false, 43 44 "~"=>false, 44 45 "~#"=>false, 46 "a-b~toto"=>false, 47 "ab~ro-ro"=>false, 48 "#aaa"=>false, 49 "##"=>false, 50 "aa#aa"=>false, 51 "aaa#"=>false, 52 "foo~#aaa"=>false, 53 "foo~aa#aa"=>false, 54 "foo~aaa#"=>false, 55 "~@classic"=>false, 56 "@"=>false, 57 "#@"=>false, 58 "aa.bb"=>false, 59 "aa~bb.cc"=>false, 45 60 ); 46 61 $this->runtest($sels); … … 53 68 "#~ctrl_meth@truc"=>array('unittest','ctrl','meth','truc'), 54 69 "#~_meth@truc"=>array('unittest','default','meth','truc'), 70 "#~meth@truc"=>array('unittest','default','meth','truc'), 55 71 "#~ctrl_@truc"=>array('unittest','ctrl','index','truc'), 56 72 "#~@truc"=>array('unittest','default','index','truc'), … … 58 74 "#~ctrl_meth"=>array('unittest','ctrl','meth','classic'), 59 75 "#~_meth"=>array('unittest','default','meth','classic'), 76 "#~meth"=>array('unittest','default','meth','classic'), 60 77 "#~ctrl_"=>array('unittest','ctrl','index','classic'), 61 78 "#~"=>array('unittest','default','index','classic'), 62 79 "#~#"=>array('unittest','default','testselectoract','classic'), 63 64 80 ); 65 81 $this->runtest($sels); … … 75 91 "ctrl_meth"=>array('unittest','ctrl','meth','classic'), 76 92 "_meth"=>array('unittest','default','meth','classic'), 93 "meth"=>array('unittest','default','meth','classic'), 77 94 "ctrl_"=>array('unittest','ctrl','index','classic'), 78 95 ""=>array('unittest','default','index','classic'), … … 81 98 $this->runtest($sels); 82 99 } 83 84 100 85 101 protected function runtest($list){
