Skip to content

Commit cfff7cb

Browse files
committed
add split and rsplit
1 parent 5d13dae commit cfff7cb

File tree

3 files changed

+740
-1
lines changed

3 files changed

+740
-1
lines changed

tests/snippets/bytes.py

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,3 +345,181 @@
345345
assert b"www.example.com".lstrip(b"cmowz.") == b"example.com"
346346
assert b" spacious ".rstrip() == b" spacious"
347347
assert b"mississippi".rstrip(b"ipz") == b"mississ"
348+
349+
350+
# split
351+
assert b"1,2,3".split(b",") == [b"1", b"2", b"3"]
352+
assert b"1,2,3".split(b",", maxsplit=1) == [b"1", b"2,3"]
353+
assert b"1,2,,3,".split(b",") == [b"1", b"2", b"", b"3", b""]
354+
assert b"1 2 3".split() == [b"1", b"2", b"3"]
355+
assert b"1 2 3".split(maxsplit=1) == [b"1", b"2 3"]
356+
assert b" 1 2 3 ".split() == [b"1", b"2", b"3"]
357+
assert b"k\ruh\nfz e f".split() == [b"k", b"uh", b"fz", b"e", b"f"]
358+
359+
SPLIT_FIXTURES = [
360+
[
361+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
362+
[4, 5],
363+
[[1, 2, 3], [1, 2, 3], [1, 2, 3]],
364+
[[1, 2, 3], [1, 2, 3], [1, 2, 3]],
365+
-1,
366+
],
367+
[
368+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
369+
[4, 5],
370+
[[1, 2, 3], [1, 2, 3], [1, 2, 3], []],
371+
[[1, 2, 3], [1, 2, 3], [1, 2, 3], []],
372+
-1,
373+
],
374+
[
375+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3],
376+
[4, 5],
377+
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [3]],
378+
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [3]],
379+
-1,
380+
],
381+
[
382+
[4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
383+
[4, 5],
384+
[[], [2, 3], [1, 2, 3], [1, 2, 3]],
385+
[[], [2, 3], [1, 2, 3], [1, 2, 3]],
386+
-1,
387+
],
388+
[
389+
[1, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
390+
[4, 5],
391+
[[1], [2, 3], [1, 2, 3], [1, 2, 3]],
392+
[[1], [2, 3], [1, 2, 3], [1, 2, 3]],
393+
-1,
394+
],
395+
[
396+
[1, 2, 3, 4, 5, 4, 5, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
397+
[4, 5],
398+
[[1, 2, 3], [], [], [1, 2, 3], [1, 2, 3]],
399+
[[1, 2, 3], [], [], [1, 2, 3], [1, 2, 3]],
400+
-1,
401+
],
402+
# maxsplit
403+
[
404+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
405+
[4, 5],
406+
[[1, 2, 3], [1, 2, 3, 4, 5, 1, 2, 3]],
407+
[[1, 2, 3, 4, 5, 1, 2, 3], [1, 2, 3]],
408+
1,
409+
],
410+
[
411+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
412+
[4, 5],
413+
[[1, 2, 3], [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]],
414+
[[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3], []],
415+
1,
416+
],
417+
[
418+
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3],
419+
[4, 5],
420+
[[1, 2, 3], [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 3]],
421+
[[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3], [3]],
422+
1,
423+
],
424+
[
425+
[4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
426+
[4, 5],
427+
[[], [2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3]],
428+
[[4, 5, 2, 3, 4, 5, 1, 2, 3], [1, 2, 3]],
429+
1,
430+
],
431+
[
432+
[1, 4, 5, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
433+
[4, 5],
434+
[[1], [2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3]],
435+
[[1, 4, 5, 2, 3, 4, 5, 1, 2, 3], [1, 2, 3]],
436+
1,
437+
],
438+
[
439+
[1, 2, 3, 4, 5, 4, 5, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3],
440+
[4, 5],
441+
[[1, 2, 3], [], [4, 5, 1, 2, 3, 4, 5, 1, 2, 3]],
442+
[[1, 2, 3, 4, 5, 4, 5], [1, 2, 3], [1, 2, 3]],
443+
2,
444+
],
445+
[
446+
[13, 13, 13, 117, 104, 10, 102, 122, 32, 101, 102, 9, 9],
447+
None,
448+
[[117, 104], [102, 122], [101, 102]],
449+
[[117, 104], [102, 122], [101, 102]],
450+
-1,
451+
],
452+
[
453+
[13, 13, 13, 117, 104, 10, 102, 122, 32, 101, 102, 9, 9],
454+
None,
455+
[[117, 104, 10, 102, 122, 32, 101, 102, 9, 9]],
456+
[[13, 13, 13, 117, 104, 10, 102, 122, 32, 101, 102]],
457+
0,
458+
],
459+
[
460+
[13, 13, 13, 117, 104, 10, 102, 122, 32, 101, 102, 9, 9],
461+
None,
462+
[[117, 104], [102, 122, 32, 101, 102, 9, 9]],
463+
[[13, 13, 13, 117, 104, 10, 102, 122], [101, 102]],
464+
1,
465+
],
466+
[
467+
[13, 13, 13, 117, 104, 10, 102, 122, 32, 101, 102, 9, 9],
468+
None,
469+
[[117, 104], [102, 122], [101, 102, 9, 9]],
470+
[[13, 13, 13, 117, 104], [102, 122], [101, 102]],
471+
2,
472+
],
473+
[
474+
[13, 13, 13, 117, 104, 10, 10, 10, 102, 122, 32, 32, 101, 102, 9, 9],
475+
None,
476+
[[117, 104], [102, 122], [101, 102]],
477+
[[117, 104], [102, 122], [101, 102]],
478+
-1,
479+
],
480+
[[49, 44, 50, 44, 51], [44], [[49], [50], [51]], [[49], [50], [51]], -1],
481+
[[49, 44, 50, 44, 51], [44], [[49], [50, 44, 51]], [[49, 44, 50], [51]], 1],
482+
[
483+
[49, 44, 50, 44, 44, 51, 44],
484+
[44],
485+
[[49], [50], [], [51], []],
486+
[[49], [50], [], [51], []],
487+
-1,
488+
],
489+
[[49, 32, 50, 32, 51], None, [[49], [50], [51]], [[49], [50], [51]], -1],
490+
[[49, 32, 50, 32, 51], None, [[49], [50, 32, 51]], [[49, 32, 50], [51]], 1],
491+
[
492+
[32, 32, 32, 49, 32, 32, 32, 50, 32, 32, 32, 51, 32, 32, 32],
493+
None,
494+
[[49], [50], [51]],
495+
[[49], [50], [51]],
496+
-1,
497+
],
498+
]
499+
500+
501+
# for i in SPLIT_FIXTURES: # for not yet implemented : TypeError: Unsupported method: __next__
502+
n_sp = 0
503+
while n_sp < len(SPLIT_FIXTURES):
504+
i = SPLIT_FIXTURES[n_sp]
505+
sep = None if i[1] == None else bytes(i[1])
506+
try:
507+
assert bytes(i[0]).split(sep=sep, maxsplit=i[4]) == [bytes(j) for j in i[2]]
508+
except AssertionError:
509+
print(i[0], i[1], i[2])
510+
print(
511+
"Expected : ", [list(x) for x in bytes(i[0]).split(sep=sep, maxsplit=i[4])]
512+
)
513+
break
514+
515+
try:
516+
assert bytes(i[0]).rsplit(sep=sep, maxsplit=i[4]) == [bytes(j) for j in i[3]]
517+
except AssertionError:
518+
print(i[0], i[1], i[2])
519+
print(
520+
"Expected Rev : ",
521+
[list(x) for x in bytes(i[0]).rsplit(sep=sep, maxsplit=i[4])],
522+
)
523+
break
524+
525+
n_sp += 1

0 commit comments

Comments
 (0)