@@ -215,16 +215,24 @@ pub fn split_once_test() {
215
215
|> bit_array . split_once ( << "h" : utf8 >> )
216
216
|> should . equal ( Ok ( # ( << >> , << "ello" : utf8 >> ) ) )
217
217
218
- << "hello" : utf8 >>
218
+ << 0 , 1 , 0 , 2 , 0 , 3 >>
219
+ |> bit_array . split_once ( << 0 , 2 >> )
220
+ |> should . equal ( Ok ( # ( << 0 , 1 >> , << 0 , 3 >> ) ) )
221
+
222
+ << 0 , 1 , 2 , 0 , 3 , 4 , 5 >>
223
+ |> bit_array . split_once ( << >> )
224
+ |> should . equal ( Error ( Nil ) )
225
+
226
+ << >>
219
227
|> bit_array . split_once ( << 1 >> )
220
228
|> should . equal ( Error ( Nil ) )
221
229
222
- << "hello" : utf8 >>
223
- |> bit_array . split_once ( << "" : utf8 >> )
230
+ << 1 >>
231
+ |> bit_array . split_once ( << 1 >> )
224
232
|> should . equal ( Error ( Nil ) )
225
233
226
- << "hello" : utf8 >>
227
- |> bit_array . split_once ( << "hello" : utf8 >> )
234
+ << 0 >>
235
+ |> bit_array . split_once ( << 1 >> )
228
236
|> should . equal ( Error ( Nil ) )
229
237
}
230
238
@@ -237,6 +245,49 @@ pub fn split_once_erlang_only_test() {
237
245
|> should . equal ( Error ( Nil ) )
238
246
}
239
247
248
+ pub fn split_test ( ) {
249
+ << "hello" : utf8 >>
250
+ |> bit_array . split ( << "l" : utf8 >> )
251
+ |> should . equal ( Ok ( [ << "he" : utf8 >> , << "o" : utf8 >> ] ) )
252
+
253
+ << 0 , 1 , 0 , 2 , 0 , 3 >>
254
+ |> bit_array . split ( << 0 >> )
255
+ |> should . equal ( Ok ( [ << 1 >> , << 2 >> , << 3 >> ] ) )
256
+
257
+ << 1 , 0 >>
258
+ |> bit_array . split ( << 0 >> )
259
+ |> should . equal ( Ok ( [ << 1 >> ] ) )
260
+
261
+ << 0 , 1 , 0 , 2 , 0 , 3 >>
262
+ |> bit_array . split ( << 0 , 2 >> )
263
+ |> should . equal ( Ok ( [ << 0 , 1 >> , << 0 , 3 >> ] ) )
264
+
265
+ << 1 >>
266
+ |> bit_array . split ( << 0 >> )
267
+ |> should . equal ( Ok ( [ << 1 >> ] ) )
268
+
269
+ << 1 >>
270
+ |> bit_array . split ( << 1 >> )
271
+ |> should . equal ( Ok ( [ ] ) )
272
+
273
+ << >>
274
+ |> bit_array . split ( << 1 >> )
275
+ |> should . equal ( Ok ( [ ] ) )
276
+
277
+ << 0 , 1 , 2 , 0 , 3 , 4 , 5 >>
278
+ |> bit_array . split ( << >> )
279
+ |> should . equal ( Error ( Nil ) )
280
+ }
281
+
282
+ // This test is target specific since it's using non byte-aligned BitArrays
283
+ // and those are not supported on the JavaScript target.
284
+ @ target ( erlang )
285
+ pub fn split_erlang_only_test ( ) {
286
+ << 0 , 1 , 2 : 7 >>
287
+ |> bit_array . split ( << 1 >> )
288
+ |> should . equal ( Error ( Nil ) )
289
+ }
290
+
240
291
pub fn to_string_test ( ) {
241
292
<< >>
242
293
|> bit_array . to_string
0 commit comments