RPA Toolkit
added ini file parsing test.
[rpatk.git] / phpext / prpa / tests / 009.phpt
1 --TEST--
2 rpa_dbex_parse($hDbex, $pattern, $myname)
3 --SKIPIF--
4 <?php if (!extension_loaded("prpa")) echo "skip\n"; ?>
5 --FILE--
6 <?php 
7         $hDbex = rpa_dbex_create();
8         $records = 0;
9         rpa_dbex_open($hDbex);
10
11         $bnf = "#!emitid first 1\n" .
12         "#!emitid last 2\n" .
13         "#!emitid name 3\n" .
14         "first ::= [a-z]+\n" .
15         "last ::= [a-z]+\n" .
16         "name ::= <first> ' '+ <last>\n";
17         if (rpa_dbex_load($hDbex, $bnf) < 0) {
18                 echo("rpa_dbex_load failed.\n");
19                 echo(rpa_dbex_error($hDbex) . "\n");
20         }
21         
22         rpa_dbex_close($hDbex);
23         if (rpa_dbex_compile($hDbex) < 0) {
24                 die(rpa_dbex_error($hDbex). "\n");      
25         }
26         $pattern = rpa_dbex_lookup($hDbex, "name");
27         if ($pattern == -1) {
28                 die(rpa_dbex_error($hDbex). "\n");
29         }
30         $myname = "John Smith";
31         $stat = rpa_stat_create($hDbex, 0);
32         
33         $ret = rpa_stat_parse($stat, $pattern, RPA_ENCODING_ICASE_UTF8, $myname, $records);
34         if ($ret < 0) {
35                 die(rpa_stat_error($stat). "\n");       
36         }
37         $matched = "matched: " . substr($myname, 0, $ret) . "\n";
38         echo($matched);
39         
40         if (is_array($records)) {
41                 foreach ($records as $record) {
42                         if ($record['type'] & RPA_RECORD_START)
43                                 echo("START ");
44                         else if ($record['type'] & RPA_RECORD_END)
45                                 echo("END   ");
46                         else
47                                 echo("UNKNOWN");
48                         echo ("(" . $record['offset'] . ", " . $record['size'] . ") " . $record['uid'] . ", " . $record['rule'] . ": " . $record['input'] . "\n");
49                 }
50         }
51         unset($stat);
52         unset($hDbex);
53       
54 ?>
55 --EXPECT--
56 matched: John Smith
57 START (0, 10) 3, name: John Smith
58 START (0, 4) 1, first: John
59 END   (0, 4) 1, first: John
60 START (5, 5) 2, last: Smith
61 END   (5, 5) 2, last: Smith
62 END   (0, 10) 3, name: John Smith