global statement removal: hphp/test [7/x]
[hiphop-php.git] / hphp / test / quick / vec / basic-setters.php
blobc3ae8250b1a8ba27778db07908fa9ce6eaa75939
1 <?hh
2 // Copyright 2004-present Facebook. All Rights Reserved.
4 function test_append($orig) {
5 echo "Testing append....\n";
6 $v = $orig;
7 $v[] = 0;
8 $v[] = 'a';
9 $v[] = 1.23;
10 $v[] = false;
11 $v[] = new stdclass();
12 $v[] = null;
13 $v[] = [300, 200, 100];
14 $v[] = vec[];
15 $v[] = vec[1, 2, 3];
16 $v[] = dict['a' => 1, 'b' => 2, 'c' => 3];
17 $v[] = keyset['a', 'b', 'c'];
18 var_dump($orig);
19 var_dump($v);
22 function do_set($vec, $key, $val) {
23 try {
24 $vec[$key] = $val;
25 echo "Set to $val succeeded\n";
26 } catch (Exception $e) {
27 echo "Set to $val failed: \"", $e->getMessage(), "\"\n";
29 return $vec;
32 function test_set($orig) {
33 echo "Testing set....\n";
34 $v = do_set($orig, 0, "0 key value")
35 |> do_set($$, 3, "3 key value")
36 |> do_set($$, 999999999, "999999999 key value")
37 |> do_set($$, -1, "-1 key value")
38 |> do_set($$, "key1", "\"key1\" key value")
39 |> do_set($$, "0", "\"0\" key value")
40 |> do_set($$, "3", "\"3\" key value")
41 |> do_set($$, "", "\"\" key value")
42 |> do_set($$, false, "bool key value")
43 |> do_set($$, null, "null key value")
44 |> do_set($$, 1.23, "double key value")
45 |> do_set($$, new stdclass(), "object key value")
46 |> do_set($$, [1, 2, 3], "array key value")
47 |> do_set($$, vec[1, 2, 3], "vec key value")
48 |> do_set($$, dict['a' => 1, 'b' => 2, 'c' => 3], "dict key value")
49 |> do_set($$, keyset['a', 'b', 'c'], "keyset key value");
50 var_dump($orig);
51 var_dump($v);
54 function do_setop($vec, $key, $val) {
55 try {
56 $vec[$key] .= $val;
57 echo "Set-Op with \"$val\" succeeded\n";
58 } catch (Exception $e) {
59 echo "Set-Op with \"$val\" failed: \"", $e->getMessage(), "\"\n";
61 return $vec;
64 function test_setop($orig) {
65 echo "Test set-op....\n";
66 $v = do_setop($orig, 0, " + 0 key value")
67 |> do_setop($$, 3, " + 3 key value")
68 |> do_setop($$, 999999999, " + 999999999 key value")
69 |> do_setop($$, -1, " + -1 key value")
70 |> do_setop($$, "key1", " + \"key1\" key value")
71 |> do_setop($$, "0", " + \"0\" key value")
72 |> do_setop($$, "3", " + \"3\" key value")
73 |> do_setop($$, "", " + \"\" key value")
74 |> do_setop($$, false, " + bool key value")
75 |> do_setop($$, null, " + null key value")
76 |> do_setop($$, 1.23, " + double key value")
77 |> do_setop($$, new stdclass(), " + object key value")
78 |> do_setop($$, [1, 2, 3], " + array key value")
79 |> do_setop($$, vec[1, 2, 3], " + vec key value")
80 |> do_setop($$, dict['a' => 1, 'b' => 2, 'c' => 3], " + dict key value")
81 |> do_setop($$, keyset['a', 'b', 'c'], " + keyset key value");
82 var_dump($orig);
83 var_dump($v);
86 function do_new_setop($vec, $val, $s) {
87 try {
88 $vec[] .= $val;
89 echo "New set-op with \"$s\" succeeded\n";
90 } catch (Exception $e) {
91 echo "New set-op with \"$s\" failed: \"", $e->getMessage(), "\"\n";
93 return $vec;
96 function test_new_setop($orig) {
97 echo "Test new set-op....\n";
98 $v = do_new_setop($orig, 0, "+ 0 value")
99 |> do_new_setop($$, 3, "+ 3 value")
100 |> do_new_setop($$, 999999999, "+ 999999999 value")
101 |> do_new_setop($$, -1, "+ -1 value")
102 |> do_new_setop($$, "a", "+ \"a\" value")
103 |> do_new_setop($$, "key1", " + \"key1\" value")
104 |> do_new_setop($$, "0", " + \"0\" value")
105 |> do_new_setop($$, "3", " + \"3\" value")
106 |> do_new_setop($$, "", " + \"\" value")
107 |> do_new_setop($$, false, " + bool value")
108 |> do_new_setop($$, null, " + null value")
109 |> do_new_setop($$, 1.23, " + double value")
110 |> do_new_setop($$, new stdclass(), " + object value")
111 |> do_new_setop($$, [1, 2, 3], " + array value")
112 |> do_new_setop($$, vec[1, 2, 3], " + vec value")
113 |> do_new_setop($$, dict['a' => 1, 'b' => 2, 'c' => 3], " + dict value")
114 |> do_new_setop($$, keyset['a', 'b', 'c'], " + keyset value");
115 var_dump($orig);
116 var_dump($v);
119 function do_unset($vec, $key, $str) {
120 try {
121 unset($vec[$key]);
122 echo "Unset of $str succeeded\n";
123 } catch (Exception $e) {
124 echo "Unset of $str failed: \"", $e->getMessage(), "\"\n";
126 return $vec;
129 function test_unset($orig) {
130 echo "Test unset....\n";
131 $vec1 = do_unset($orig, 0, "0 key value");
132 var_dump($orig);
133 var_dump($vec1);
135 $vec2 = do_unset($orig, 3, "3 key value");
136 var_dump($orig);
137 var_dump($vec2);
139 $vec3 = do_unset($orig, 999999999, "999999999 key value")
140 |> do_unset($$, -1, "-1 key value")
141 |> do_unset($$, "key1", "\"key1\" key value")
142 |> do_unset($$, "0", "\"0\" key value")
143 |> do_unset($$, "3", "\"3\" key value")
144 |> do_unset($$, "", "\"\" key value")
145 |> do_unset($$, false, "false key value")
146 |> do_unset($$, null, "null key value")
147 |> do_unset($$, 1.23, "double key value")
148 |> do_unset($$, new stdclass(), "object key value")
149 |> do_unset($$, [1, 2, 3], "array key value")
150 |> do_unset($$, vec[1, 2, 3], "vec key value")
151 |> do_unset($$, dict['a' => 1, 'b' => 2, 'c' => 3], "dict key value")
152 |> do_unset($$, keyset['a', 'b', 'c'], "keyset key value");
153 var_dump($orig);
154 var_dump($vec3);
157 function test($v) {
158 echo "Testing: ";
159 var_dump($v);
160 test_append($v);
161 test_set($v);
162 test_setop($v);
163 test_new_setop($v);
164 test_unset($v);
167 test(vec[]);
168 test(vec[1, 2, 3, 4]);
169 test(vec['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']);