def test_subsequence_min_size_constraint(data, seq): min_size_strat = st.integers(min_value=0, max_value=len(seq)) min_size = data.draw(min_size_strat) sub_seq_strat = st.subsequence_of(seq, min_size=min_size) sub_seq = data.draw(sub_seq_strat) assert len(sub_seq) >= min_size
def test_subsequence_original_elements_not_over_produced(data, seq): sub_seq_strat = st.subsequence_of(seq) sub_seq = data.draw(sub_seq_strat) # Per unique item, check that they don't occur in the subsequence # more times that they appear in the source. for item in set(sub_seq): assert sub_seq.count(item) <= seq.count(item)
def test_subsequence_only_original_elements(data, seq): sub_seq_strat = st.subsequence_of(seq) sub_seq = data.draw(sub_seq_strat) assert isinstance(sub_seq, list) assert len(sub_seq) <= len(seq)
def test_subsequence_elements_not_over_drawn(data, seq): sub_seq_strat = st.subsequence_of(seq) sub_seq = data.draw(sub_seq_strat) assert not (set(sub_seq) - set(seq))
def test_subsequence_sizing(data, seq): sub_seq_strat = st.subsequence_of(seq) sub_seq = data.draw(sub_seq_strat) assert isinstance(sub_seq, list) assert len(sub_seq) <= len(seq)