MCPcopy Create free account
hub / github.com/ashvardanian/StringZilla / test_unit_strs_sequence_slicing

Function test_unit_strs_sequence_slicing

scripts/test_stringzilla.py:623–685  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

621
622
623def test_unit_strs_sequence_slicing():
624 native = "1, 2, 3, 4, 5, 6"
625 big = Str(native)
626 big_sequence = big.split(", ")
627
628 def to_str(seq):
629 return "".join([str(x) for x in seq])
630
631 assert big_sequence[1:3] == ["2", "3"], to_str(big_sequence[1:3])
632 assert big_sequence[1:] == ["2", "3", "4", "5", "6"], to_str(big_sequence[1:])
633 assert big_sequence[:3] == ["1", "2", "3"], to_str(big_sequence[:3])
634
635 # Use negative indices to slice from the end
636 assert big_sequence[-1:] == ["6"], to_str(big_sequence[-1:])
637 assert big_sequence[:-1] == ["1", "2", "3", "4", "5"], to_str(big_sequence[:-1])
638 assert big_sequence[-3:] == ["4", "5", "6"], to_str(big_sequence[-3:])
639 assert big_sequence[:-3] == ["1", "2", "3"], to_str(big_sequence[:-3])
640
641 # Introduce a step to skip some values
642 assert big_sequence[::2] == ["1", "3", "5"], to_str(big_sequence[::2])
643 assert big_sequence[::-1] == ["6", "5", "4", "3", "2", "1"], to_str(big_sequence[::-1])
644
645 # Let's go harder with nested slicing
646 assert big_sequence[1:][::-1] == ["6", "5", "4", "3", "2"]
647 assert big_sequence[1:][::-2] == ["6", "4", "2"]
648 assert big_sequence[1:][::-3] == ["6", "3"]
649
650 # Edge cases: slices of length 1 and 0
651 # Test single element slices (length 1)
652 assert big_sequence[0:1] == ["1"], "Single element slice [0:1] failed"
653 assert big_sequence[1:2] == ["2"], "Single element slice [1:2] failed"
654 assert big_sequence[-1:] == ["6"], "Single element slice [-1:] failed"
655 assert big_sequence[-2:-1] == ["5"], "Single element slice [-2:-1] failed"
656
657 # Test empty slices (length 0)
658 assert big_sequence[0:0] == [], "Empty slice [0:0] failed"
659 assert big_sequence[1:1] == [], "Empty slice [1:1] failed"
660 assert big_sequence[5:5] == [], "Empty slice [5:5] failed"
661 assert big_sequence[10:10] == [], "Empty slice [10:10] out of bounds failed"
662 assert big_sequence[1:0] == [], "Empty slice [1:0] (start > end) failed"
663 assert big_sequence[3:1] == [], "Empty slice [3:1] (start > end) failed"
664
665 # Test edge cases with pre-constructed Strs objects passed as slices
666 single_slice = big_sequence[0:1] # Length 1 slice
667 empty_slice = big_sequence[0:0] # Length 0 slice
668
669 # Verify the slices work correctly when passed around
670 assert len(single_slice) == 1, "Single slice length incorrect"
671 assert len(empty_slice) == 0, "Empty slice length incorrect"
672 assert str(single_slice[0]) == "1", "Single slice element access failed"
673
674 # Test iteration over edge case slices
675 single_items = [str(item) for item in single_slice]
676 assert single_items == ["1"], "Single slice iteration failed"
677
678 empty_items = [str(item) for item in empty_slice]
679 assert empty_items == [], "Empty slice iteration failed"
680

Callers

nothing calls this directly

Calls 2

splitMethod · 0.80
to_strFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…