Show More
@@ -2944,6 +2944,64 b' class addset(abstractsmartset):' | |||
|
2944 | 2944 | If the ascending attribute is set, that means the two structures are |
|
2945 | 2945 | ordered in either an ascending or descending way. Therefore, we can add |
|
2946 | 2946 | them maintaining the order by iterating over both at the same time |
|
2947 | ||
|
2948 | >>> xs = baseset([0, 3, 2]) | |
|
2949 | >>> ys = baseset([5, 2, 4]) | |
|
2950 | ||
|
2951 | >>> rs = addset(xs, ys) | |
|
2952 | >>> bool(rs), 0 in rs, 1 in rs, 5 in rs, rs.first(), rs.last() | |
|
2953 | (True, True, False, True, 0, 4) | |
|
2954 | >>> rs = addset(xs, baseset([])) | |
|
2955 | >>> bool(rs), 0 in rs, 1 in rs, rs.first(), rs.last() | |
|
2956 | (True, True, False, 0, 2) | |
|
2957 | >>> rs = addset(baseset([]), baseset([])) | |
|
2958 | >>> bool(rs), 0 in rs, rs.first(), rs.last() | |
|
2959 | (False, False, None, None) | |
|
2960 | ||
|
2961 | iterate unsorted: | |
|
2962 | >>> rs = addset(xs, ys) | |
|
2963 | >>> [x for x in rs] # without _genlist | |
|
2964 | [0, 3, 2, 5, 4] | |
|
2965 | >>> assert not rs._genlist | |
|
2966 | >>> len(rs) | |
|
2967 | 5 | |
|
2968 | >>> [x for x in rs] # with _genlist | |
|
2969 | [0, 3, 2, 5, 4] | |
|
2970 | >>> assert rs._genlist | |
|
2971 | ||
|
2972 | iterate ascending: | |
|
2973 | >>> rs = addset(xs, ys, ascending=True) | |
|
2974 | >>> [x for x in rs], [x for x in rs.fastasc()] # without _asclist | |
|
2975 | ([0, 2, 3, 4, 5], [0, 2, 3, 4, 5]) | |
|
2976 | >>> assert not rs._asclist | |
|
2977 | >>> len(rs) # BROKEN | |
|
2978 | 6 | |
|
2979 | >>> [x for x in rs], [x for x in rs.fastasc()] # BROKEN with _asclist | |
|
2980 | ([0, 2, 2, 3, 4, 5], [0, 2, 2, 3, 4, 5]) | |
|
2981 | >>> assert rs._asclist | |
|
2982 | ||
|
2983 | iterate descending: | |
|
2984 | >>> rs = addset(xs, ys, ascending=False) | |
|
2985 | >>> [x for x in rs], [x for x in rs.fastdesc()] # without _asclist | |
|
2986 | ([5, 4, 3, 2, 0], [5, 4, 3, 2, 0]) | |
|
2987 | >>> assert not rs._asclist | |
|
2988 | >>> len(rs) # BROKEN | |
|
2989 | 6 | |
|
2990 | >>> [x for x in rs], [x for x in rs.fastdesc()] # BROKEN with _asclist | |
|
2991 | ([5, 4, 3, 2, 2, 0], [5, 4, 3, 2, 2, 0]) | |
|
2992 | >>> assert rs._asclist | |
|
2993 | ||
|
2994 | iterate ascending without fastasc: | |
|
2995 | >>> rs = addset(xs, generatorset(ys), ascending=True) | |
|
2996 | >>> assert rs.fastasc is None | |
|
2997 | >>> [x for x in rs] # BROKEN | |
|
2998 | [0, 2, 2, 3, 4, 5] | |
|
2999 | ||
|
3000 | iterate descending without fastdesc: | |
|
3001 | >>> rs = addset(generatorset(xs), ys, ascending=False) | |
|
3002 | >>> assert rs.fastdesc is None | |
|
3003 | >>> [x for x in rs] # BROKEN | |
|
3004 | [5, 4, 3, 2, 2, 0] | |
|
2947 | 3005 | """ |
|
2948 | 3006 | def __init__(self, revs1, revs2, ascending=None): |
|
2949 | 3007 | self._r1 = revs1 |
@@ -833,6 +833,54 b' test that `or` operation combines elemen' | |||
|
833 | 833 | 4 |
|
834 | 834 | 5 |
|
835 | 835 | |
|
836 | test that `or` operation skips duplicated revisions from right-hand side | |
|
837 | ||
|
838 | $ try 'reverse(1::5) or ancestors(4)' | |
|
839 | (or | |
|
840 | (func | |
|
841 | ('symbol', 'reverse') | |
|
842 | (dagrange | |
|
843 | ('symbol', '1') | |
|
844 | ('symbol', '5'))) | |
|
845 | (func | |
|
846 | ('symbol', 'ancestors') | |
|
847 | ('symbol', '4'))) | |
|
848 | * set: | |
|
849 | <addset | |
|
850 | <baseset [5, 3, 1]>, | |
|
851 | <filteredset | |
|
852 | <filteredset | |
|
853 | <fullreposet+ 0:9>>>> | |
|
854 | 5 | |
|
855 | 3 | |
|
856 | 1 | |
|
857 | 0 | |
|
858 | 2 | |
|
859 | 4 | |
|
860 | $ try 'sort(ancestors(4) or reverse(1::5))' | |
|
861 | (func | |
|
862 | ('symbol', 'sort') | |
|
863 | (or | |
|
864 | (func | |
|
865 | ('symbol', 'ancestors') | |
|
866 | ('symbol', '4')) | |
|
867 | (func | |
|
868 | ('symbol', 'reverse') | |
|
869 | (dagrange | |
|
870 | ('symbol', '1') | |
|
871 | ('symbol', '5'))))) | |
|
872 | * set: | |
|
873 | <addset+ | |
|
874 | <generatorset+>, | |
|
875 | <filteredset | |
|
876 | <baseset [5, 3, 1]>>> | |
|
877 | 0 | |
|
878 | 1 | |
|
879 | 2 | |
|
880 | 3 | |
|
881 | 4 | |
|
882 | 5 | |
|
883 | ||
|
836 | 884 | check that conversion to only works |
|
837 | 885 | $ try --optimize '::3 - ::1' |
|
838 | 886 | (minus |
General Comments 0
You need to be logged in to leave comments.
Login now