@@ -35,7 +35,7 @@ my @infixes =
35
35
;
36
36
my $ iterations = @ infixes / 3 ;
37
37
38
- plan 60 * $ iterations ;
38
+ plan 162 * $ iterations ;
39
39
40
40
= begin pod
41
41
@@ -44,115 +44,181 @@ plan 60 * $iterations;
44
44
= end pod
45
45
46
46
for @ infixes -> $ name , & op , & metaop {
47
+ my $ a = 1 ;
48
+ my $ reset = $ a ;
49
+ my $ b = 6 ;
50
+ my $ result = op($ a , $ b );
51
+
52
+ # $a >>op<< $b
53
+ is-deeply $ a >> [& op ]< < $b, $result, "\$a >> $ name \<< \$ b " ;
54
+ is-deeply $ a <<[& op ]<< $ b , $ result , " \$ a << $ name \<< \$ b " ;
55
+ is-deeply $ a <<[& op ]>> $ b , $ result , " \$ a < <$name >> \$ b " ;
56
+ is-deeply $ a >>[& op ]>> $ b , $ result , " \$ a >> $ name >> \$ b " ;
57
+
58
+ # $ a >>op=<< $ b
59
+ is-deeply $ a >>[& metaop ]<< $ b , $ result , " \$ a >> $ name = << \$b";
60
+ is-deeply $a, $result, "\$a assigned from \$a >> $ name = << \$b";
61
+ $a = $reset;
62
+ is-deeply $a <<[&metaop]<< $b, $result, "\$a <<$name=<< \$b";
63
+ is-deeply $a, $result, "\$a assigned from \$a <<$name=<< \$b";
64
+ $a = $reset;
65
+ is-deeply $a <<[&metaop] >> $ b , $ result , " \$a <<$ name =>> \$b" ;
66
+ is-deeply $ a , $ result , " \$a assigned from \$a <<$ name =>> \$b" ;
67
+ $ a = $ reset ;
68
+ is-deeply $ a >> [& metaop ]>> $ b , $ result , " \$a >>$ name =>> \$b" ;
69
+ is-deeply $ a , $ result , " \$a assigned from \$a >>$ name =>> \$b" ;
70
+ $ a = $ reset ;
71
+
72
+ # ordinary array initialization
47
73
my @ a = 1 .. 5 ;
48
74
my @ reset = @ a ;
49
75
my @ b = 6 .. 10 ;
50
-
51
- # @a >>op<< @b
52
76
my @ result = (^ @ a ). map : { op(@ a [$ _ ], @ b [$ _ ]) }
53
- is-deeply @ a >> [& op ]< < @b, @result, "@a >> $ name \<< @ b " ;
54
- is-deeply @ a <<[& op ]<< @ b , @ result , " @ a << $ name \<< @ b " ;
55
- is-deeply @ a <<[& op ]>> @ b , @ result , " @ a < <$name >> @ b " ;
56
- is-deeply @ a >>[& op ]>> @ b , @ result , " @ a >> $ name >> @ b " ;
57
-
58
- # @ a >>op=<< @ b
59
- is-deeply @ a >>[& metaop ]<< @ b , @ result , " @ a >> $ name = << @b";
60
- is-deeply @a, @result, "@a assigned from @a >> $ name = << @b";
61
- @a = @reset;
62
- is-deeply @a <<[&metaop]<< @b, @result, "@a <<$name=<< @b";
63
- is-deeply @a, @result, "@a assigned from @a <<$name=<< @b";
64
- @a = @reset;
65
- is-deeply @a <<[&metaop] >> @ b , @ result , " @ a <<$ name =>> @ b" ;
66
- is-deeply @ a , @ result , " @ a assigned from @ a <<$ name =>> @ b" ;
67
- @ a = @ reset ;
68
- is-deeply @ a >> [& metaop ]>> @ b , @ result , " @ a >>$ name =>> @ b" ;
69
- is-deeply @ a , @ result , " @ a assigned from @ a >>$ name =>> @ b" ;
70
- @ a = @ reset ;
71
-
72
- # @a >>op<< 3
73
- @ result = (^ @ a ). map : { op(@ a [$ _ ], 3 ) }
74
- dies-ok { @ a >> [& op ]< < 3 }, "@a >> $ name \<< 3 dies" ;
75
- dies-ok { @ a << [& op ]<< 3 } , " @ a << $ name \<< 3 dies" ;
76
- is-deeply @ a <<[& op ]>> 3, @ result , " @ a < <$name >> 3 " ;
77
- is-deeply @ a >>[& op ]>> 3, @ result , " @ a >> $ name >> 3 " ;
78
-
79
- # @ a >>op=<< 3
80
- dies-ok { @ a >> [& metaop ]< < 3 }, "@a >> $ name = << 3 dies";
81
- dies-ok { @a <<[&metaop]<< 3 }, "@a <<$name=<< 3 dies";
82
- is-deeply @a <<[&metaop] >> 3 , @ result , " @ a <<$ name =>> 3" ;
83
- is-deeply @ a , @ result , " @ a assigned from @ a <<$ name =>> 3" ;
84
- @ a = @ reset ;
85
- is-deeply @ a >> [& metaop ]>> 3 , @ result , " @ a >>$ name =>> 3" ;
86
- is-deeply @ a , @ result , " @ a assigned from @ a >>$ name =>> 3" ;
87
- @ a = @ reset ;
88
-
89
- # 3 >>op<< @a
90
- @ result = (^ @ a ). map : { op(3 , @ a [$ _ ]) }
91
- dies-ok { 3 >> [& op ]< < @a }, "3 >> $ name \<< @ a dies" ;
92
- dies-ok { 3 >> [& op ]>> @ a } , " 3 >> $ name >> @ a dies" ;
93
- is-deeply 3 <<[& op ]>> @ a , @ result , " 3 < <$name >> @ a " ;
94
- is-deeply 3 <<[& op ]<< @ a , @ result , " 3 << $ name \<< @ a " ;
95
-
96
- # 3 >>op=<< @ a
97
- dies-ok { 3 >> [& metaop ]< < @a }, "3 >> $ name = << @a dies";
98
- dies-ok { 3 >> [& metaop ]>> @ a } , " 3 >> $ name => > @ a dies" ;
99
- dies-ok { 3 < <[&metaop] >> @ a } , " 3 < <$name= >> @ a dies" ;
100
- dies-ok { 3 << [& metaop ]<< @ a } , " 3 << $ name = << @a dies";
101
-
77
+ my @ resultop3 = (^ @ a ). map : { op(@ a [$ _ ], 3 ) }
78
+ my @ result3op = (^ @ a ). map : { op(3 , @ a [$ _ ]) }
79
+
80
+ # typed array initialization
81
+ my Cool @ ac = 1 .. 5 ;
82
+ my Cool @ resetc = @ ac ;
83
+ my Cool @ bc = 6 .. 10 ;
84
+ my Cool @ resultc = (^ @ ac ). map : { op(@ ac [$ _ ], @ bc [$ _ ]) }
85
+ my Cool @ resultop3c = (^ @ ac ). map : { op(@ ac [$ _ ], 3 ) }
86
+ my Cool @ result3opc = (^ @ ac ). map : { op(3 , @ ac [$ _ ]) }
87
+
88
+ for (
89
+ @ a , @ b , @ reset , @ result , @ resultop3 , @ result3op ,
90
+ @ ac , @ bc , @ resetc , @ resultc , @ resultop3c , @ result3opc ,
91
+
92
+ ) -> @ a , @ b , @ reset , @ result , @ resultop3 , @ result3op {
93
+
94
+ # @a >>op<< @b
95
+ is-deeply @ a >> [& op ]< < @b, @result, "@a >> $ name \<< @ b " ;
96
+ is-deeply @ a <<[& op ]<< @ b , @ result , " @ a << $ name \<< @ b " ;
97
+ is-deeply @ a <<[& op ]>> @ b , @ result , " @ a < <$name >> @ b " ;
98
+ is-deeply @ a >>[& op ]>> @ b , @ result , " @ a >> $ name >> @ b " ;
99
+
100
+ # @ a >>op=<< @ b
101
+ is-deeply @ a >>[& metaop ]<< @ b , @ result , " @ a >> $ name = << @b";
102
+ is-deeply @a, @result, "@a assigned from @a >> $ name = << @b";
103
+ @a = @reset;
104
+ is-deeply @a <<[&metaop]<< @b, @result, "@a <<$name=<< @b";
105
+ is-deeply @a, @result, "@a assigned from @a <<$name=<< @b";
106
+ @a = @reset;
107
+ is-deeply @a <<[&metaop] >> @ b , @ result , " @ a <<$ name =>> @ b" ;
108
+ is-deeply @ a , @ result , " @ a assigned from @ a <<$ name =>> @ b" ;
109
+ @ a = @ reset ;
110
+ is-deeply @ a >> [& metaop ]>> @ b , @ result , " @ a >>$ name =>> @ b" ;
111
+ is-deeply @ a , @ result , " @ a assigned from @ a >>$ name =>> @ b" ;
112
+ @ a = @ reset ;
113
+
114
+ # @a >>op<< 3
115
+ dies-ok { @ a >> [& op ]< < 3 }, "@a >> $ name \<< 3 dies" ;
116
+ dies-ok { @ a << [& op ]<< 3 } , " @ a << $ name \<< 3 dies" ;
117
+ is-deeply @ a <<[& op ]>> 3, @ resultop3 , " @ a < <$name >> 3 " ;
118
+ is-deeply @ a >>[& op ]>> 3, @ resultop3 , " @ a >> $ name >> 3 " ;
119
+
120
+ # @ a >>op=<< 3
121
+ dies-ok { @ a >> [& metaop ]< < 3 }, "@a >> $ name = << 3 dies";
122
+ dies-ok { @a <<[&metaop]<< 3 }, "@a <<$name=<< 3 dies";
123
+ is-deeply @a <<[&metaop] >> 3 , @ resultop3 , " @ a <<$ name =>> 3" ;
124
+ is-deeply @ a , @ resultop3 , " @ a assigned from @ a <<$ name =>> 3" ;
125
+ @ a = @ reset ;
126
+ is-deeply @ a >> [& metaop ]>> 3 , @ resultop3 , " @ a >>$ name =>> 3" ;
127
+ is-deeply @ a , @ resultop3 , " @ a assigned from @ a >>$ name =>> 3" ;
128
+ @ a = @ reset ;
129
+
130
+ # 3 >>op<< @a
131
+ dies-ok { 3 >> [& op ]< < @a }, "3 >> $ name \<< @ a dies" ;
132
+ dies-ok { 3 >> [& op ]>> @ a } , " 3 >> $ name >> @ a dies" ;
133
+ is-deeply 3 <<[& op ]>> @ a , @ result3op , " 3 < <$name >> @ a " ;
134
+ is-deeply 3 <<[& op ]<< @ a , @ result3op , " 3 << $ name \<< @ a " ;
135
+
136
+ # 3 >>op=<< @ a
137
+ dies-ok { 3 >> [& metaop ]< < @a }, "3 >> $ name = << @a dies";
138
+ dies-ok { 3 >> [& metaop ]>> @ a } , " 3 >> $ name => > @ a dies" ;
139
+ dies-ok { 3 < <[&metaop] >> @ a } , " 3 < <$name= >> @ a dies" ;
140
+ dies-ok { 3 << [& metaop ]<< @ a } , " 3 << $ name = << @a dies";
141
+ }
142
+
143
+ # ordinary hashes initialization
102
144
my %a = "a".."e" Z= > 1 .. 5 ;
103
145
my % reset = % a ;
104
146
my % b = " a" .. " e" Z => 6 .. 10 ;
105
-
106
- # %a >>op<< %b
107
147
my % result = % a . map : { . key => op(. value , % b {. key }) }
108
- is-deeply % a >> [& op ]< < %b, %result, "%a >> $ name \<< % b " ;
109
- is-deeply % a <<[& op ]<< % b , % result , " % a << $ name \<< % b " ;
110
- is-deeply % a <<[& op ]>> % b , % result , " % a < <$name >> % b " ;
111
- is-deeply % a >>[& op ]>> % b , % result , " % a >> $ name >> % b " ;
112
-
113
- # % a >>op=<< % b
114
- is-deeply % a >>[& metaop ]<< % b , % result , " % a >> $ name = << %b";
115
- is-deeply %a, %result, "%a assigned from %a >> $ name = << %b";
116
- %a = %reset;
117
- is-deeply %a <<[&metaop]<< %b, %result, "%a <<$name=<< %b";
118
- is-deeply %a, %result, "%a assigned from %a <<$name=<< %b";
119
- %a = %reset;
120
- is-deeply %a <<[&metaop] >> % b , % result , " % a <<$ name =>> % b" ;
121
- is-deeply % a , % result , " % a assigned from % a <<$ name =>> % b" ;
122
- % a = % reset ;
123
- is-deeply % a >> [& metaop ]>> % b , % result , " % a >>$ name =>> % b" ;
124
- is-deeply % a , % result , " % a assigned from % a >>$ name =>> % b" ;
125
- % a = % reset ;
126
-
127
- # %a >>op<< 3
128
- my % result = % a . map : { . key => op(. value , 3 ) }
129
- dies-ok { % a >> [& op ]< < 3 }, "%a >> $ name \<< 3 dies" ;
130
- dies-ok { % a << [& op ]<< 3 } , " % a << $ name \<< 3 dies" ;
131
- is-deeply % a <<[& op ]>> 3, % result , " % a < <$name >> 3 " ;
132
- is-deeply % a >>[& op ]>> 3, % result , " % a >> $ name >> 3 " ;
133
-
134
- # % a >>op=<< 3
135
- dies-ok { % a >> [& metaop ]< < 3 }, "%a >> $ name = << 3 dies";
136
- dies-ok { %a <<[&metaop]<< 3 }, "%a <<$name=<< 3 dies";
137
- is-deeply %a <<[&metaop] >> 3 , % result , " % a <<$ name =>> 3" ;
138
- is-deeply % a , % result , " % a assigned from % a <<$ name =>> 3" ;
139
- % a = % reset ;
140
- is-deeply % a >> [& metaop ]>> 3 , % result , " % a >>$ name =>> 3" ;
141
- is-deeply % a , % result , " % a assigned from % a >>$ name =>> 3" ;
142
- % a = % reset ;
143
-
144
- # 3 >>op<< %a
145
- my % result = % a . map : { . key => op(3 , . value ) }
146
- dies-ok { 3 >> [& op ]< < %a }, "3 >> $ name \<< % a dies" ;
147
- dies-ok { 3 >> [& op ]>> % a } , " 3 >> $ name >> % a dies" ;
148
- is-deeply 3 <<[& op ]>> % a , % result , " 3 < <$name >> % a " ;
149
- is-deeply 3 <<[& op ]<< % a , % result , " 3 << $ name \<< % a " ;
150
-
151
- # 3 >>op<< % a
152
- dies-ok { 3 >> [& metaop ]< < %a }, "3 >> $ name = << %a dies";
153
- dies-ok { 3 >> [& metaop ]>> % a } , " 3 >> $ name => > % a dies" ;
154
- dies-ok { 3 < <[&metaop] >> % a } , " 3 < <$name= >> % a dies" ;
155
- dies-ok { 3 << [& metaop ]<< % a } , " 3 << $ name = << %a dies";
148
+ my % resultop3 = % a . map : { . key => op(. value , 3 ) }
149
+ my % result3op = % a . map : { . key => op(3 , . value ) }
150
+
151
+ # typed hashes initialization
152
+ my Cool % ac = % a ;
153
+ my Cool % resetc = % ac ;
154
+ my Cool % bc = % b ;
155
+ my Cool % resultc = % result ;
156
+ my Cool % resultop3c = % resultop3 ;
157
+ my Cool % result3opc = % result3op ;
158
+
159
+ # object hashes initialization
160
+ my % ao {Any } = % a ;
161
+ my % reseto {Any } = % ao ;
162
+ my % bo {Any } = % b ;
163
+ my % resulto {Any } = % result ;
164
+ my % resultop3o {Any } = % resultop3 ;
165
+ my % result3opo {Any } = % result3op ;
166
+
167
+ for (
168
+ % a , % b , % reset , % result , % resultop3 , % result3op ,
169
+ % ac , % bc , % resetc , % resultc , % resultop3c , % result3opc ,
170
+ % ao , % bo , % reseto , % resulto , % resultop3o , % result3opo ,
171
+
172
+ ) -> % a , % b , % reset , % result , % resultop3 , % result3op {
173
+
174
+ # %a >>op<< %b
175
+ is-deeply % a >> [& op ]< < %b, %result, "%a >> $ name \<< % b " ;
176
+ is-deeply % a <<[& op ]<< % b , % result , " % a << $ name \<< % b " ;
177
+ is-deeply % a <<[& op ]>> % b , % result , " % a < <$name >> % b " ;
178
+ is-deeply % a >>[& op ]>> % b , % result , " % a >> $ name >> % b " ;
179
+
180
+ # % a >>op=<< % b
181
+ is-deeply % a >>[& metaop ]<< % b , % result , " % a >> $ name = << %b";
182
+ is-deeply %a, %result, "%a assigned from %a >> $ name = << %b";
183
+ %a = %reset;
184
+ is-deeply %a <<[&metaop]<< %b, %result, "%a <<$name=<< %b";
185
+ is-deeply %a, %result, "%a assigned from %a <<$name=<< %b";
186
+ %a = %reset;
187
+ is-deeply %a <<[&metaop] >> % b , % result , " % a <<$ name =>> % b" ;
188
+ is-deeply % a , % result , " % a assigned from % a <<$ name =>> % b" ;
189
+ % a = % reset ;
190
+ is-deeply % a >> [& metaop ]>> % b , % result , " % a >>$ name =>> % b" ;
191
+ is-deeply % a , % result , " % a assigned from % a >>$ name =>> % b" ;
192
+ % a = % reset ;
193
+
194
+ # %a >>op<< 3
195
+ dies-ok { % a >> [& op ]< < 3 }, "%a >> $ name \<< 3 dies" ;
196
+ dies-ok { % a << [& op ]<< 3 } , " % a << $ name \<< 3 dies" ;
197
+ is-deeply % a <<[& op ]>> 3, % resultop3 , " % a < <$name >> 3 " ;
198
+ is-deeply % a >>[& op ]>> 3, % resultop3 , " % a >> $ name >> 3 " ;
199
+
200
+ # % a >>op=<< 3
201
+ dies-ok { % a >> [& metaop ]< < 3 }, "%a >> $ name = << 3 dies";
202
+ dies-ok { %a <<[&metaop]<< 3 }, "%a <<$name=<< 3 dies";
203
+ is-deeply %a <<[&metaop] >> 3 , % resultop3 , " % a <<$ name =>> 3" ;
204
+ is-deeply % a , % resultop3 , " % a assigned from % a <<$ name =>> 3" ;
205
+ % a = % reset ;
206
+ is-deeply % a >> [& metaop ]>> 3 , % resultop3 , " % a >>$ name =>> 3" ;
207
+ is-deeply % a , % resultop3 , " % a assigned from % a >>$ name =>> 3" ;
208
+ % a = % reset ;
209
+
210
+ # 3 >>op<< %a
211
+ dies-ok { 3 >> [& op ]< < %a }, "3 >> $ name \<< % a dies" ;
212
+ dies-ok { 3 >> [& op ]>> % a } , " 3 >> $ name >> % a dies" ;
213
+ is-deeply 3 <<[& op ]>> % a , % result3op , " 3 < <$name >> % a " ;
214
+ is-deeply 3 <<[& op ]<< % a , % result3op , " 3 << $ name \<< % a " ;
215
+
216
+ # 3 >>op<< % a
217
+ dies-ok { 3 >> [& metaop ]< < %a }, "3 >> $ name = << %a dies";
218
+ dies-ok { 3 >> [& metaop ]>> % a } , " 3 >> $ name => > % a dies" ;
219
+ dies-ok { 3 < <[&metaop] >> % a } , " 3 < <$name= >> % a dies" ;
220
+ dies-ok { 3 << [& metaop ]<< % a } , " 3 << $ name = << %a dies";
221
+ }
156
222
}
157
223
158
224
# vim: ft=perl6
0 commit comments