@@ -120,88 +120,166 @@ func Test_blob_assign()
120120endfunc
121121
122122func Test_blob_get_range ()
123+ let lines = << trim END
124+ VAR b = 0z0011223344
125+ call assert_equal (0z2233 , b [2 : 3 ])
126+ call assert_equal (0z223344 , b [2 : -1 ])
127+ call assert_equal (0z00 , b [0 : -5 ])
128+ call assert_equal (0 z, b [0 : -11 ])
129+ call assert_equal (0z44 , b [-1 :])
130+ call assert_equal (0z0011223344 , b [:])
131+ call assert_equal (0z0011223344 , b [: -1 ])
132+ call assert_equal (0 z, b [5 : 6 ])
133+ call assert_equal (0z0011 , b [-10 : 1 ])
134+ END
135+ call CheckLegacyAndVim9Success (lines )
136+
137+ " legacy script white space
123138 let b = 0z0011223344
124139 call assert_equal (0z2233 , b [2 :3 ])
125- call assert_equal (0z223344 , b [2 :-1 ])
126- call assert_equal (0z00 , b [0 :-5 ])
127- call assert_equal (0 z, b [0 :-11 ])
128- call assert_equal (0z44 , b [-1 :])
129- call assert_equal (0z0011223344 , b [:])
130- call assert_equal (0z0011223344 , b [:-1 ])
131- call assert_equal (0 z, b [5 :6 ])
132- call assert_equal (0z0011 , b [-10 :1 ])
133140endfunc
134141
135142func Test_blob_get ()
136- let b = 0z0011223344
137- call assert_equal (0x00 , get (b , 0 ))
138- call assert_equal (0x22 , get (b , 2 , 999 ))
139- call assert_equal (0x44 , get (b , 4 ))
140- call assert_equal (0x44 , get (b , -1 ))
141- call assert_equal (-1 , get (b , 5 ))
142- call assert_equal (999 , get (b , 5 , 999 ))
143- call assert_equal (-1 , get (b , -8 ))
144- call assert_equal (999 , get (b , -8 , 999 ))
145- call assert_equal (10 , get (test_null_blob (), 2 , 10 ))
146-
147- call assert_equal (0x00 , b [0 ])
148- call assert_equal (0x22 , b [2 ])
149- call assert_equal (0x44 , b [4 ])
150- call assert_equal (0x44 , b [-1 ])
151- call assert_fails (' echo b[5]' , ' E979:' )
152- call assert_fails (' echo b[-8]' , ' E979:' )
143+ let lines = << trim END
144+ VAR b = 0z0011223344
145+ call assert_equal (0x00 , get (b , 0 ))
146+ call assert_equal (0x22 , get (b , 2 , 999 ))
147+ call assert_equal (0x44 , get (b , 4 ))
148+ call assert_equal (0x44 , get (b , -1 ))
149+ call assert_equal (-1 , get (b , 5 ))
150+ call assert_equal (999 , get (b , 5 , 999 ))
151+ call assert_equal (-1 , get (b , -8 ))
152+ call assert_equal (999 , get (b , -8 , 999 ))
153+ call assert_equal (10 , get (test_null_blob (), 2 , 10 ))
154+
155+ call assert_equal (0x00 , b [0 ])
156+ call assert_equal (0x22 , b [2 ])
157+ call assert_equal (0x44 , b [4 ])
158+ call assert_equal (0x44 , b [-1 ])
159+ END
160+ call CheckLegacyAndVim9Success (lines )
161+
162+ let lines = << trim END
163+ VAR b = 0z0011223344
164+ echo b [5 ]
165+ END
166+ call CheckLegacyAndVim9Failure (lines , ' E979:' )
167+
168+ let lines = << trim END
169+ VAR b = 0z0011223344
170+ echo b [-8 ]
171+ END
172+ call CheckLegacyAndVim9Failure (lines , ' E979:' )
153173endfunc
154174
155175func Test_blob_to_string ()
156- let b = 0z00112233445566778899aabbccdd
157- call assert_equal (' 0z00112233.44556677.8899AABB.CCDD' , string (b ))
158- call assert_equal (b , eval (string (b )))
159- call remove (b , 4 , -1 )
160- call assert_equal (' 0z00112233' , string (b ))
161- call remove (b , 0 , 3 )
162- call assert_equal (' 0z' , string (b ))
163- call assert_equal (' 0z' , string (test_null_blob ()))
176+ let lines = << trim END
177+ VAR b = 0z00112233445566778899aabbccdd
178+ call assert_equal (' 0z00112233.44556677.8899AABB.CCDD' , string (b ))
179+ call assert_equal (b , eval (string (b )))
180+ call remove (b , 4 , -1 )
181+ call assert_equal (' 0z00112233' , string (b ))
182+ call remove (b , 0 , 3 )
183+ call assert_equal (' 0z' , string (b ))
184+ call assert_equal (' 0z' , string (test_null_blob ()))
185+ END
186+ call CheckLegacyAndVim9Success (lines )
164187endfunc
165188
166189func Test_blob_compare ()
167- let b1 = 0z0011
168- let b2 = 0z1100
169- let b3 = 0z001122
170- call assert_true (b1 == b1)
171- call assert_false (b1 == b2)
172- call assert_false (b1 == b3)
173- call assert_true (b1 != b2)
174- call assert_true (b1 != b3)
175- call assert_true (b1 == 0z0011 )
176- call assert_fails (' echo b1 == 9' , ' E977:' )
177- call assert_fails (' echo b1 != 9' , ' E977:' )
178-
179- call assert_false (b1 is b2)
180- let b2 = b1
181- call assert_true (b1 == b2)
182- call assert_true (b1 is b2)
183- let b2 = copy (b1)
184- call assert_true (b1 == b2)
185- call assert_false (b1 is b2)
186- let b2 = b1[:]
187- call assert_true (b1 == b2)
188- call assert_false (b1 is b2)
189- call assert_true (b1 isnot b2)
190-
191- call assert_fails (' let x = b1 > b2' )
192- call assert_fails (' let x = b1 < b2' )
193- call assert_fails (' let x = b1 - b2' )
194- call assert_fails (' let x = b1 / b2' )
195- call assert_fails (' let x = b1 * b2' )
190+ let lines = << trim END
191+ VAR b1 = 0z0011
192+ VAR b2 = 0z1100
193+ VAR b3 = 0z001122
194+ call assert_true (b1 == b1)
195+ call assert_false (b1 == b2)
196+ call assert_false (b1 == b3)
197+ call assert_true (b1 != b2)
198+ call assert_true (b1 != b3)
199+ call assert_true (b1 == 0z0011 )
200+
201+ call assert_false (b1 is b2)
202+ LET b2 = b1
203+ call assert_true (b1 == b2)
204+ call assert_true (b1 is b2)
205+ LET b2 = copy (b1)
206+ call assert_true (b1 == b2)
207+ call assert_false (b1 is b2)
208+ LET b2 = b1[:]
209+ call assert_true (b1 == b2)
210+ call assert_false (b1 is b2)
211+ call assert_true (b1 isnot b2)
212+ END
213+ call CheckLegacyAndVim9Success (lines )
214+
215+ let lines = << trim END
216+ VAR b1 = 0z0011
217+ echo b1 == 9
218+ END
219+ call CheckLegacyAndVim9Failure (lines , [' E977:' , ' E1072' , ' E1072' ])
220+
221+ let lines = << trim END
222+ VAR b1 = 0z0011
223+ echo b1 != 9
224+ END
225+ call CheckLegacyAndVim9Failure (lines , [' E977:' , ' E1072' , ' E1072' ])
226+
227+ let lines = << trim END
228+ VAR b1 = 0z0011
229+ VAR b2 = 0z1100
230+ VAR x = b1 > b2
231+ END
232+ call CheckLegacyAndVim9Failure (lines , [' E978:' , ' E1072:' , ' E1072:' ])
233+
234+ let lines = << trim END
235+ VAR b1 = 0z0011
236+ VAR b2 = 0z1100
237+ VAR x = b1 < b2
238+ END
239+ call CheckLegacyAndVim9Failure (lines , [' E978:' , ' E1072:' , ' E1072:' ])
240+
241+ let lines = << trim END
242+ VAR b1 = 0z0011
243+ VAR b2 = 0z1100
244+ VAR x = b1 - b2
245+ END
246+ call CheckLegacyAndVim9Failure (lines , [' E974:' , ' E1036:' , ' E974:' ])
247+
248+ let lines = << trim END
249+ VAR b1 = 0z0011
250+ VAR b2 = 0z1100
251+ VAR x = b1 / b2
252+ END
253+ call CheckLegacyAndVim9Failure (lines , [' E974:' , ' E1036:' , ' E974:' ])
254+
255+ let lines = << trim END
256+ VAR b1 = 0z0011
257+ VAR b2 = 0z1100
258+ VAR x = b1 * b2
259+ END
260+ call CheckLegacyAndVim9Failure (lines , [' E974:' , ' E1036:' , ' E974:' ])
196261endfunc
197262
198- " test for range assign
199- func Test_blob_range_assign ()
200- let b = 0z00
201- let b [1 ] = 0x11
202- let b [2 ] = 0x22
203- call assert_equal (0z001122 , b )
204- call assert_fails (' let b[4] = 0x33' , ' E979:' )
263+ func Test_blob_index_assign ()
264+ let lines = << trim END
265+ VAR b = 0z00
266+ LET b [1 ] = 0x11
267+ LET b [2 ] = 0x22
268+ call assert_equal (0z001122 , b )
269+ END
270+ call CheckLegacyAndVim9Success (lines )
271+
272+ let lines = << trim END
273+ VAR b = 0z00
274+ LET b [2 ] = 0x33
275+ END
276+ call CheckLegacyAndVim9Failure (lines , ' E979:' )
277+
278+ let lines = << trim END
279+ VAR b = 0z00
280+ LET b [-2 ] = 0x33
281+ END
282+ call CheckLegacyAndVim9Failure (lines , ' E979:' )
205283endfunc
206284
207285func Test_blob_for_loop ()
0 commit comments