flush
[m6w6/ext-psi] / tests / getopt / getopt001.phpt
1 --TEST--
2 getopt
3 --INI--
4 psi.directory={PWD}:{PWD}/../../psi.d
5 --SKIPIF--
6 <?php
7 extension_loaded("psi") or die("skip - need ext/psi");
8 function_exists("psi\\div") or die("skip - need psi\\div()");
9 ?>
10 --ENV--
11 POSIXLY_CORRECT=
12 --FILE--
13 ===TEST===
14 <?php
15
16 $args = [
17 "progname", "huh", "-v", "-x", 1, "-s", "foo", "--", "-gotcha", "--bar", "baz"
18 ];
19
20 $opts = "v::x:s:";
21
22 psi\opterr(0);
23
24 while (($opt = chr(psi\getopt($args, $opts)))) {
25 switch ($opt) {
26 case "v":
27 printf("got v\n");
28 break;
29 case "x":
30 case "s":
31 printf("got %s: %s\n", $opt, psi\optarg());
32 break;
33 default:
34 printf("error '%s'\n", $opt);
35 case chr(-1):
36 break 2;
37 }
38 }
39
40 $pos = psi\optind();
41 while ($pos < count($args)) {
42 printf("arg: %s\n", $args[$pos++]);
43 }
44
45 var_dump($args);
46
47 ?>
48 ===DONE===
49 --EXPECT--
50 ===TEST===
51 got v
52 got x: 1
53 got s: foo
54 arg: huh
55 arg: -gotcha
56 arg: --bar
57 arg: baz
58 array(11) {
59 [0]=>
60 string(8) "progname"
61 [1]=>
62 string(2) "-v"
63 [2]=>
64 string(2) "-x"
65 [3]=>
66 string(1) "1"
67 [4]=>
68 string(2) "-s"
69 [5]=>
70 string(3) "foo"
71 [6]=>
72 string(2) "--"
73 [7]=>
74 string(3) "huh"
75 [8]=>
76 string(7) "-gotcha"
77 [9]=>
78 string(5) "--bar"
79 [10]=>
80 string(3) "baz"
81 }
82 ===DONE===