- Timestamp:
- 10/21/2025 12:07:16 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/interactivity-api/wpInteractivityAPI.php
r61019 r61020 379 379 // Multiple evaluations should be serialized only once. 380 380 $this->set_internal_namespace_stack( 'pluginWithInvokedDerivedState' ); 381 $this->evaluate( 'state.derivedProp' ); 382 $this->evaluate( 'state.derivedProp' ); 383 $this->evaluate( 'state.nested.derivedProp' ); 384 $this->evaluate( 'state.nested.derivedProp' ); 381 $this->evaluate( 382 array( 383 'namespace' => 'pluginWithInvokedDerivedState', 384 'value' => 'state.derivedProp', 385 ) 386 ); 387 $this->evaluate( 388 array( 389 'namespace' => 'pluginWithInvokedDerivedState', 390 'value' => 'state.derivedProp', 391 ) 392 ); 393 $this->evaluate( 394 array( 395 'namespace' => 'pluginWithInvokedDerivedState', 396 'value' => 'state.nested.derivedProp', 397 ) 398 ); 399 $this->evaluate( 400 array( 401 'namespace' => 'pluginWithInvokedDerivedState', 402 'value' => 'state.nested.derivedProp', 403 ) 404 ); 385 405 386 406 // Only the path part that points to a derived state prop should be serialized. 387 407 $this->set_internal_namespace_stack( 'pluginWithInvokedDerivedStateReturningArray' ); 388 $this->evaluate( 'state.nested.derivedProp.prop' ); 408 $this->evaluate( 409 array( 410 'namespace' => 'pluginWithInvokedDerivedStateReturningArray', 411 'value' => 'state.nested.derivedProp', 412 ) 413 ); 389 414 } 390 415 ); … … 820 845 * name. 821 846 * 822 * @ticket 6 0356823 * 824 * @covers :: extract_prefix_and_suffix825 */ 826 public function test_ extract_prefix_and_suffix() {827 $ extract_prefix_and_suffix = new ReflectionMethod( $this->interactivity, 'extract_prefix_and_suffix' );847 * @ticket 64106 848 * 849 * @covers ::parse_directive_name 850 */ 851 public function test_parse_directive_name() { 852 $parse_directive_name = new ReflectionMethod( $this->interactivity, 'parse_directive_name' ); 828 853 if ( PHP_VERSION_ID < 80100 ) { 829 $ extract_prefix_and_suffix->setAccessible( true );854 $parse_directive_name->setAccessible( true ); 830 855 } 831 856 832 $result = $extract_prefix_and_suffix->invoke( $this->interactivity, 'data-wp-interactive' ); 833 $this->assertSame( array( 'data-wp-interactive' ), $result ); 834 835 $result = $extract_prefix_and_suffix->invoke( $this->interactivity, 'data-wp-bind--src' ); 836 $this->assertSame( array( 'data-wp-bind', 'src' ), $result ); 837 838 $result = $extract_prefix_and_suffix->invoke( $this->interactivity, 'data-wp-foo--and--bar' ); 839 $this->assertSame( array( 'data-wp-foo', 'and--bar' ), $result ); 857 // Should parse directives without suffix or unique ID. 858 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test' ); 859 $this->assertSame( 'test', $result['prefix'] ); 860 $this->assertNull( $result['suffix'] ); 861 $this->assertNull( $result['unique_id'] ); 862 863 // Should parse directives with suffix only. 864 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test--one' ); 865 $this->assertSame( 'test', $result['prefix'] ); 866 $this->assertSame( 'one', $result['suffix'] ); 867 $this->assertNull( $result['unique_id'] ); 868 869 // Should parse directives with unique ID only. 870 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test---unique-id' ); 871 $this->assertSame( 'test', $result['prefix'] ); 872 $this->assertNull( $result['suffix'] ); 873 $this->assertSame( 'unique-id', $result['unique_id'] ); 874 875 // Should parse directives with suffix and unique ID. 876 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test--suffix---unique-id' ); 877 $this->assertSame( 'test', $result['prefix'] ); 878 $this->assertSame( 'suffix', $result['suffix'] ); 879 $this->assertSame( 'unique-id', $result['unique_id'] ); 880 881 // Should handle empty suffix (just two dashes). 882 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test--' ); 883 $this->assertSame( 'test', $result['prefix'] ); 884 $this->assertNull( $result['suffix'] ); 885 $this->assertNull( $result['unique_id'] ); 886 887 // Should handle empty unique ID (just three dashes). 888 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test---' ); 889 $this->assertSame( 'test', $result['prefix'] ); 890 $this->assertNull( $result['suffix'] ); 891 $this->assertNull( $result['unique_id'] ); 892 893 // Should handle only dashes (4 or more dashes). 894 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test----' ); 895 $this->assertSame( 'test', $result['prefix'] ); 896 $this->assertSame( '--', $result['suffix'] ); 897 $this->assertNull( $result['unique_id'] ); 898 899 // Should handle suffix starting with 4 or more dashes but containing valid characters. 900 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test------custom-suffix' ); 901 $this->assertSame( 'test', $result['prefix'] ); 902 $this->assertSame( '----custom-suffix', $result['suffix'] ); 903 $this->assertNull( $result['unique_id'] ); 904 905 // Should handle complex pattern with multiple dashes. 906 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test--complex--suffix---complex--unique---id' ); 907 $this->assertSame( 'test', $result['prefix'] ); 908 $this->assertSame( 'complex--suffix', $result['suffix'] ); 909 $this->assertSame( 'complex--unique---id', $result['unique_id'] ); 910 911 // Should handle suffix with dashes followed by unique ID. 912 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test----suffix---unique-id' ); 913 $this->assertSame( 'test', $result['prefix'] ); 914 $this->assertSame( '--suffix', $result['suffix'] ); 915 $this->assertSame( 'unique-id', $result['unique_id'] ); 916 917 // Should handle unique IDs followed by suffix in wrong order. 918 $result = $parse_directive_name->invoke( $this->interactivity, 'data-wp-test---unique-id--wrong-suffix' ); 919 $this->assertSame( 'test', $result['prefix'] ); 920 $this->assertNull( $result['suffix'] ); 921 $this->assertSame( 'unique-id--wrong-suffix', $result['unique_id'] ); 922 } 923 924 /** 925 * Tests the ability to get the valid entries of a specific directive in an HTML element. 926 * 927 * @ticket 64106 928 * 929 * @covers ::get_directive_entries 930 */ 931 public function test_get_directive_entries() { 932 $get_directive_entries = new ReflectionMethod( $this->interactivity, 'get_directive_entries' ); 933 if ( PHP_VERSION_ID < 80100 ) { 934 $get_directive_entries->setAccessible( true ); 935 } 936 $this->set_internal_namespace_stack( 'myPlugin' ); 937 938 // Should process simple directives. 939 $html = '<div data-wp-test="test value"></div>'; 940 $p = new WP_Interactivity_API_Directives_Processor( $html ); 941 $p->next_tag(); 942 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 943 $this->assertCount( 1, $results ); 944 $result = $results[0]; 945 $this->assertSame( 'myPlugin', $result['namespace'] ); 946 $this->assertSame( 'test value', $result['value'] ); 947 $this->assertNull( $result['suffix'] ); 948 $this->assertNull( $result['unique_id'] ); 949 950 // Should process directives without value. 951 $html = '<div data-wp-test></div>'; 952 $p = new WP_Interactivity_API_Directives_Processor( $html ); 953 $p->next_tag(); 954 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 955 $this->assertNull( $results[0]['value'] ); 956 957 // Should parse JSON values in directives. 958 $html = '<div data-wp-test=\'{"key": "value"}\'></div>'; 959 $p = new WP_Interactivity_API_Directives_Processor( $html ); 960 $p->next_tag(); 961 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 962 $this->assertSame( array( 'key' => 'value' ), $results[0]['value'] ); 963 964 // Should handle malformed JSON and keep as string. 965 $html = '<div data-wp-test="{malformed: json}"></div>'; 966 $p = new WP_Interactivity_API_Directives_Processor( $html ); 967 $p->next_tag(); 968 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 969 $this->assertSame( '{malformed: json}', $results[0]['value'] ); 970 971 // Should process directives with a custom namespace. 972 $html = '<div data-wp-test="my-namespace::test value"></div>'; 973 $p = new WP_Interactivity_API_Directives_Processor( $html ); 974 $p->next_tag(); 975 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 976 $this->assertSame( 'my-namespace', $results[0]['namespace'] ); 977 $this->assertSame( 'test value', $results[0]['value'] ); 978 979 // Should parse JSON values with a custom namespace. 980 $html = '<div data-wp-test=\'my-namespace::{"key": "value"}\'></div>'; 981 $p = new WP_Interactivity_API_Directives_Processor( $html ); 982 $p->next_tag(); 983 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 984 $this->assertSame( 'my-namespace', $results[0]['namespace'] ); 985 $this->assertSame( array( 'key' => 'value' ), $results[0]['value'] ); 986 987 // Should handle multiple directives with different unique IDs. 988 $html = ' 989 <div 990 data-wp-test---plugin-a="value-a" 991 data-wp-test---plugin-b="value-b" 992 data-wp-test---plugin-c="value-c" 993 ></div>'; 994 $p = new WP_Interactivity_API_Directives_Processor( $html ); 995 $p->next_tag(); 996 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 997 $this->assertCount( 3, $results ); 998 $this->assertSame( 999 array( 1000 'namespace' => 'myPlugin', 1001 'value' => 'value-a', 1002 'suffix' => null, 1003 'unique_id' => 'plugin-a', 1004 ), 1005 $results[0] 1006 ); 1007 $this->assertSame( 1008 array( 1009 'namespace' => 'myPlugin', 1010 'value' => 'value-b', 1011 'suffix' => null, 1012 'unique_id' => 'plugin-b', 1013 ), 1014 $results[1] 1015 ); 1016 $this->assertSame( 1017 array( 1018 'namespace' => 'myPlugin', 1019 'value' => 'value-c', 1020 'suffix' => null, 1021 'unique_id' => 'plugin-c', 1022 ), 1023 $results[2] 1024 ); 1025 1026 // Should handle mix of different suffixes and unique IDs. 1027 $html = ' 1028 <div 1029 data-wp-test--suffix-a---id-1="value1" 1030 data-wp-test--suffix-a---id-2="value2" 1031 data-wp-test--suffix-b---id-1="value3" 1032 data-wp-test--suffix-c---id-1="value4" 1033 ></div>'; 1034 $p = new WP_Interactivity_API_Directives_Processor( $html ); 1035 $p->next_tag(); 1036 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 1037 $this->assertCount( 4, $results ); 1038 $this->assertSame( 1039 array( 1040 'namespace' => 'myPlugin', 1041 'value' => 'value1', 1042 'suffix' => 'suffix-a', 1043 'unique_id' => 'id-1', 1044 ), 1045 $results[0] 1046 ); 1047 $this->assertSame( 1048 array( 1049 'namespace' => 'myPlugin', 1050 'value' => 'value2', 1051 'suffix' => 'suffix-a', 1052 'unique_id' => 'id-2', 1053 ), 1054 $results[1] 1055 ); 1056 $this->assertSame( 1057 array( 1058 'namespace' => 'myPlugin', 1059 'value' => 'value3', 1060 'suffix' => 'suffix-b', 1061 'unique_id' => 'id-1', 1062 ), 1063 $results[2] 1064 ); 1065 $this->assertSame( 1066 array( 1067 'namespace' => 'myPlugin', 1068 'value' => 'value4', 1069 'suffix' => 'suffix-c', 1070 'unique_id' => 'id-1', 1071 ), 1072 $results[3] 1073 ); 1074 1075 // Should handle unique ID with namespace. 1076 $html = '<div data-wp-test---unique-id="my-namespace::test value"></div>'; 1077 $p = new WP_Interactivity_API_Directives_Processor( $html ); 1078 $p->next_tag(); 1079 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 1080 $this->assertSame( 'my-namespace', $results[0]['namespace'] ); 1081 $this->assertSame( 'test value', $results[0]['value'] ); 1082 $this->assertSame( 'unique-id', $results[0]['unique_id'] ); 1083 1084 // Should handle multiple directives with different namespaces and unique IDs. 1085 $html = ' 1086 <div 1087 data-wp-test---id-a="namespace-a::value1" 1088 data-wp-test---id-b="namespace-b::value2" 1089 ></div>'; 1090 $p = new WP_Interactivity_API_Directives_Processor( $html ); 1091 $p->next_tag(); 1092 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 1093 $this->assertCount( 2, $results ); 1094 $this->assertSame( 1095 array( 1096 'namespace' => 'namespace-a', 1097 'value' => 'value1', 1098 'suffix' => null, 1099 'unique_id' => 'id-a', 1100 ), 1101 $results[0] 1102 ); 1103 $this->assertSame( 1104 array( 1105 'namespace' => 'namespace-b', 1106 'value' => 'value2', 1107 'suffix' => null, 1108 'unique_id' => 'id-b', 1109 ), 1110 $results[1] 1111 ); 1112 // Should sort directives by suffix and uniqueId for stable ordering. 1113 $html = ' 1114 <div 1115 data-wp-test---z 1116 data-wp-test---a 1117 data-wp-test--b---z 1118 data-wp-test--b---a 1119 data-wp-test--a 1120 data-wp-test 1121 ></div>'; 1122 $p = new WP_Interactivity_API_Directives_Processor( $html ); 1123 $p->next_tag(); 1124 $results = $get_directive_entries->invoke( $this->interactivity, $p, 'test' ); 1125 $this->assertCount( 6, $results ); 1126 $this->assertEquals( 1127 array( 1128 array( null, null ), 1129 array( null, 'a' ), 1130 array( null, 'z' ), 1131 array( 'a', null ), 1132 array( 'b', 'a' ), 1133 array( 'b', 'z' ), 1134 ), 1135 array_map( 1136 function ( $d ) { 1137 return array( $d['suffix'], $d['unique_id'] ); 1138 }, 1139 $results 1140 ) 1141 ); 840 1142 } 841 1143 … … 925 1227 * @dataProvider data_html_with_unbalanced_tags 926 1228 * 927 * @expectedIncorrectUsage WP_Interactivity_API::_process_directives928 *929 1229 * @param string $html HTML containing unbalanced tags and also a directive. 930 1230 */ … … 1088 1388 * Invokes the private `evaluate` method of WP_Interactivity_API class. 1089 1389 * 1090 * @param string $ directive_value The directive attribute value to evaluate.1390 * @param string $entry The entry array containing namespace, value, suffix, and unique ID. 1091 1391 * @return mixed The result of the evaluate method. 1092 1392 */ 1093 private function evaluate( $ directive_value) {1393 private function evaluate( $entry ) { 1094 1394 /* 1095 1395 * The global WP_Interactivity_API instance is momentarily replaced to … … 1106 1406 } 1107 1407 1108 $result = $evaluate->invokeArgs( $this->interactivity, array( $ directive_value) );1408 $result = $evaluate->invokeArgs( $this->interactivity, array( $entry ) ); 1109 1409 1110 1410 // Restore the original WP_Interactivity_API instance. … … 1152 1452 ) 1153 1453 ); 1154 $this->set_internal_namespace_stack( 'myPlugin' ); 1155 1156 $result = $this->evaluate( 'state.key' ); 1454 $default_ns = 'myPlugin'; 1455 $this->set_internal_namespace_stack( $default_ns ); 1456 1457 $result = $this->evaluate( 1458 array( 1459 'namespace' => $default_ns, 1460 'value' => 'state.key', 1461 ) 1462 ); 1157 1463 $this->assertSame( 'myPlugin-state', $result ); 1158 1464 1159 $result = $this->evaluate( 'context.key' ); 1465 $result = $this->evaluate( 1466 array( 1467 'namespace' => $default_ns, 1468 'value' => 'context.key', 1469 ) 1470 ); 1160 1471 $this->assertSame( 'myPlugin-context', $result ); 1161 1472 1162 $result = $this->evaluate( 'otherPlugin::state.key' ); 1473 $result = $this->evaluate( 1474 array( 1475 'namespace' => 'otherPlugin', 1476 'value' => 'state.key', 1477 ) 1478 ); 1163 1479 $this->assertSame( 'otherPlugin-state', $result ); 1164 1480 1165 $result = $this->evaluate( 'otherPlugin::context.key' ); 1481 $result = $this->evaluate( 1482 array( 1483 'namespace' => 'otherPlugin', 1484 'value' => 'context.key', 1485 ) 1486 ); 1166 1487 $this->assertSame( 'otherPlugin-context', $result ); 1167 1488 1168 $result = $this->evaluate( 'state.obj.prop' ); 1489 $result = $this->evaluate( 1490 array( 1491 'namespace' => $default_ns, 1492 'value' => 'state.obj.prop', 1493 ) 1494 ); 1169 1495 $this->assertSame( 'object property', $result ); 1170 1496 1171 $result = $this->evaluate( 'state.arrAccess.1' ); 1497 $result = $this->evaluate( 1498 array( 1499 'namespace' => $default_ns, 1500 'value' => 'state.arrAccess.1', 1501 ) 1502 ); 1172 1503 $this->assertSame( '1', $result ); 1173 1504 } … … 1190 1521 ) 1191 1522 ); 1192 $this->set_internal_namespace_stack( 'myPlugin' ); 1193 1194 $result = $this->evaluate( '!state.key' ); 1523 $default_ns = 'myPlugin'; 1524 $this->set_internal_namespace_stack( $default_ns ); 1525 1526 $result = $this->evaluate( 1527 array( 1528 'namespace' => $default_ns, 1529 'value' => '!state.key', 1530 ) 1531 ); 1195 1532 $this->assertFalse( $result ); 1196 1533 1197 $result = $this->evaluate( '!context.key' ); 1534 $result = $this->evaluate( 1535 array( 1536 'namespace' => $default_ns, 1537 'value' => '!context.key', 1538 ) 1539 ); 1198 1540 $this->assertFalse( $result ); 1199 1541 1200 $result = $this->evaluate( 'otherPlugin::!state.key' ); 1542 $result = $this->evaluate( 1543 array( 1544 'namespace' => 'otherPlugin', 1545 'value' => '!state.key', 1546 ) 1547 ); 1201 1548 $this->assertFalse( $result ); 1202 1549 1203 $result = $this->evaluate( 'otherPlugin::!context.key' ); 1550 $result = $this->evaluate( 1551 array( 1552 'namespace' => 'otherPlugin', 1553 'value' => '!context.key', 1554 ) 1555 ); 1204 1556 $this->assertFalse( $result ); 1205 1557 } … … 1222 1574 ) 1223 1575 ); 1224 $this->set_internal_namespace_stack( 'myPlugin' ); 1225 1226 $result = $this->evaluate( '!state.missing' ); 1576 $default_ns = 'myPlugin'; 1577 $this->set_internal_namespace_stack( $default_ns ); 1578 1579 $result = $this->evaluate( 1580 array( 1581 'namespace' => $default_ns, 1582 'value' => '!state.missing', 1583 ) 1584 ); 1227 1585 $this->assertTrue( $result ); 1228 1586 1229 $result = $this->evaluate( '!context.missing' ); 1587 $result = $this->evaluate( 1588 array( 1589 'namespace' => $default_ns, 1590 'value' => '!context.missing', 1591 ) 1592 ); 1230 1593 $this->assertTrue( $result ); 1231 1594 1232 $result = $this->evaluate( 'otherPlugin::!state.deeply.nested.missing' ); 1595 $result = $this->evaluate( 1596 array( 1597 'namespace' => 'otherPlugin', 1598 'value' => '!state.deeply.nested.missing', 1599 ) 1600 ); 1233 1601 $this->assertTrue( $result ); 1234 1602 1235 $result = $this->evaluate( 'otherPlugin::!context.deeply.nested.missing' ); 1603 $result = $this->evaluate( 1604 array( 1605 'namespace' => 'otherPlugin', 1606 'value' => '!context.deeply.nested.missing', 1607 ) 1608 ); 1236 1609 $this->assertTrue( $result ); 1237 1610 } … … 1253 1626 ) 1254 1627 ); 1255 $this->set_internal_namespace_stack( 'myPlugin' ); 1256 1257 $result = $this->evaluate( 'state.nonExistentKey' ); 1628 $default_ns = 'myPlugin'; 1629 $this->set_internal_namespace_stack( $default_ns ); 1630 1631 $result = $this->evaluate( 1632 array( 1633 'namespace' => $default_ns, 1634 'value' => 'state.nonExistentKey', 1635 ) 1636 ); 1258 1637 $this->assertNull( $result ); 1259 1638 1260 $result = $this->evaluate( 'context.nonExistentKey' ); 1639 $result = $this->evaluate( 1640 array( 1641 'namespace' => $default_ns, 1642 'value' => 'context.nonExistentKey', 1643 ) 1644 ); 1261 1645 $this->assertNull( $result ); 1262 1646 1263 $result = $this->evaluate( 'otherPlugin::state.nonExistentKey' ); 1647 $result = $this->evaluate( 1648 array( 1649 'namespace' => 'otherPlugin', 1650 'value' => 'state.nonExistentKey', 1651 ) 1652 ); 1264 1653 $this->assertNull( $result ); 1265 1654 1266 $result = $this->evaluate( 'otherPlugin::context.nonExistentKey' ); 1655 $result = $this->evaluate( 1656 array( 1657 'namespace' => 'otherPlugin', 1658 'value' => 'context.nonExistentKey', 1659 ) 1660 ); 1267 1661 $this->assertNull( $result ); 1268 1662 1269 $result = $this->evaluate( ' state.key' ); // Extra space. 1663 $result = $this->evaluate( 1664 array( 1665 'namespace' => $default_ns, 1666 'value' => ' state.key', // Extra space. 1667 ) 1668 ); 1270 1669 $this->assertNull( $result ); 1271 1670 1272 $result = $this->evaluate( 'otherPlugin:: state.key' ); // Extra space. 1671 $result = $this->evaluate( 1672 array( 1673 'namespace' => 'otherPlugin', 1674 'value' => ' state.key', // Extra space. 1675 ) 1676 ); 1273 1677 $this->assertNull( $result ); 1274 1678 } … … 1304 1708 ) 1305 1709 ); 1306 $this->set_internal_namespace_stack( 'myPlugin' ); 1307 1308 $result = $this->evaluate( 'state.nested.key' ); 1710 $default_ns = 'myPlugin'; 1711 $this->set_internal_namespace_stack( $default_ns ); 1712 1713 $result = $this->evaluate( 1714 array( 1715 'namespace' => $default_ns, 1716 'value' => 'state.nested.key', 1717 ) 1718 ); 1309 1719 $this->assertSame( 'myPlugin-state-nested', $result ); 1310 1720 1311 $result = $this->evaluate( 'context.nested.key' ); 1721 $result = $this->evaluate( 1722 array( 1723 'namespace' => $default_ns, 1724 'value' => 'context.nested.key', 1725 ) 1726 ); 1312 1727 $this->assertSame( 'myPlugin-context-nested', $result ); 1313 1728 1314 $result = $this->evaluate( 'otherPlugin::state.nested.key' ); 1729 $result = $this->evaluate( 1730 array( 1731 'namespace' => 'otherPlugin', 1732 'value' => 'state.nested.key', 1733 ) 1734 ); 1315 1735 $this->assertSame( 'otherPlugin-state-nested', $result ); 1316 1736 1317 $result = $this->evaluate( 'otherPlugin::context.nested.key' ); 1737 $result = $this->evaluate( 1738 array( 1739 'namespace' => 'otherPlugin', 1740 'value' => 'context.nested.key', 1741 ) 1742 ); 1318 1743 $this->assertSame( 'otherPlugin-context-nested', $result ); 1319 1744 } … … 1331 1756 $this->set_internal_namespace_stack(); 1332 1757 1333 $result = $this->evaluate( 'path', 'null' ); 1758 $result = $this->evaluate( 1759 array( 1760 'namespace' => 'null', 1761 'value' => 'path', 1762 ) 1763 ); 1334 1764 $this->assertNull( $result ); 1335 1765 1336 $result = $this->evaluate( 'path', '' ); 1766 $result = $this->evaluate( 1767 array( 1768 'namespace' => '', 1769 'value' => 'path', 1770 ) 1771 ); 1337 1772 $this->assertNull( $result ); 1338 1773 1339 $result = $this->evaluate( 'path', '{}' ); 1774 $result = $this->evaluate( 1775 array( 1776 'namespace' => '{}', 1777 'value' => 'path', 1778 ) 1779 ); 1340 1780 $this->assertNull( $result ); 1341 1781 } … … 1375 1815 $this->set_internal_namespace_stack( 'myPlugin' ); 1376 1816 1377 $result = $this->evaluate( 'state.derived' ); 1817 $result = $this->evaluate( 1818 array( 1819 'namespace' => 'myPlugin', 1820 'value' => 'state.derived', 1821 ) 1822 ); 1378 1823 $this->assertSame( "Derived state: myPlugin-state\nDerived context: myPlugin-context", $result ); 1379 1824 } … … 1418 1863 $this->set_internal_namespace_stack( 'myPlugin' ); 1419 1864 1420 $result = $this->evaluate( 'state.derived' ); 1865 $result = $this->evaluate( 1866 array( 1867 'namespace' => 'myPlugin', 1868 'value' => 'state.derived', 1869 ) 1870 ); 1421 1871 $this->assertSame( "Derived state: otherPlugin-state\nDerived context: otherPlugin-context", $result ); 1422 1872 } … … 1461 1911 $this->set_internal_namespace_stack( 'myPlugin' ); 1462 1912 1463 $result = $this->evaluate( 'otherPlugin::state.derived' ); 1913 $result = $this->evaluate( 1914 array( 1915 'namespace' => 'otherPlugin', 1916 'value' => 'state.derived', 1917 ) 1918 ); 1464 1919 $this->assertSame( "Derived state: otherPlugin-state\nDerived context: otherPlugin-context", $result ); 1465 1920 } … … 1485 1940 $this->set_internal_namespace_stack( 'myPlugin' ); 1486 1941 1487 $result = $this->evaluate( 'state.derivedThatThrows' ); 1942 $result = $this->evaluate( 1943 array( 1944 'namespace' => 'myPlugin', 1945 'value' => 'state.derivedThatThrows', 1946 ) 1947 ); 1488 1948 $this->assertNull( $result ); 1489 1949 } … … 1508 1968 $this->set_internal_namespace_stack( 'myPlugin' ); 1509 1969 1510 $result = $this->evaluate( 'state.derivedState.property' ); 1970 $result = $this->evaluate( 1971 array( 1972 'namespace' => 'myPlugin', 1973 'value' => 'state.derivedState.property', 1974 ) 1975 ); 1511 1976 $this->assertSame( 'value', $result ); 1512 1977 }
Note: See TracChangeset
for help on using the changeset viewer.