@@ -215,16 +215,24 @@ pub fn split_once_test() {
215215 |> bit_array . split_once ( << "h" : utf8 >> )
216216 |> should . equal ( Ok ( # ( << >> , << "ello" : utf8 >> ) ) )
217217
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+ << >>
219227 |> bit_array . split_once ( << 1 >> )
220228 |> should . equal ( Error ( Nil ) )
221229
222- << "hello" : utf8 >>
223- |> bit_array . split_once ( << "" : utf8 >> )
230+ << 1 >>
231+ |> bit_array . split_once ( << 1 >> )
224232 |> should . equal ( Error ( Nil ) )
225233
226- << "hello" : utf8 >>
227- |> bit_array . split_once ( << "hello" : utf8 >> )
234+ << 0 >>
235+ |> bit_array . split_once ( << 1 >> )
228236 |> should . equal ( Error ( Nil ) )
229237}
230238
@@ -237,6 +245,49 @@ pub fn split_once_erlang_only_test() {
237245 |> should . equal ( Error ( Nil ) )
238246}
239247
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+
240291pub fn to_string_test ( ) {
241292 << >>
242293 |> bit_array . to_string
0 commit comments